From fe136abab1107c166e408af262d12e312629ca45 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Thu, 29 Jun 2017 22:02:30 +0200 Subject: [PATCH] Most assembler functionality, fixed drill. --- assets/hbm/models/assembler.obj | 1129 +++++++++++++++++ assets/hbm/textures/gui/gui_assembler.png | Bin 0 -> 2848 bytes .../hbm/textures/items/assembly_template.png | Bin 0 -> 242 bytes com/hbm/blocks/ModBlocks.java | 11 + .../blocks/machine/DummyBlockAssembler.java | 109 ++ com/hbm/blocks/machine/MachineAssembler.java | 176 +++ com/hbm/handler/GUIHandler.java | 19 + com/hbm/handler/MultiblockHandler.java | 4 + com/hbm/inventory/MachineRecipes.java | 39 + .../container/ContainerMachineAssembler.java | 148 +++ .../inventory/gui/GUIMachineAssembler.java | 50 + com/hbm/items/ModItems.java | 7 + com/hbm/items/tool/ItemAssemblyTemplate.java | 118 ++ com/hbm/main/ClientProxy.java | 3 + com/hbm/main/MainRegistry.java | 2 + .../render/tileentity/RenderAssembler.java | 58 + .../TileEntityMachineAssembler.java | 457 +++++++ .../TileEntityMachineMiningDrill.java | 16 +- 18 files changed, 2342 insertions(+), 4 deletions(-) create mode 100644 assets/hbm/models/assembler.obj create mode 100644 assets/hbm/textures/gui/gui_assembler.png create mode 100644 assets/hbm/textures/items/assembly_template.png create mode 100644 com/hbm/blocks/machine/DummyBlockAssembler.java create mode 100644 com/hbm/blocks/machine/MachineAssembler.java create mode 100644 com/hbm/inventory/container/ContainerMachineAssembler.java create mode 100644 com/hbm/inventory/gui/GUIMachineAssembler.java create mode 100644 com/hbm/items/tool/ItemAssemblyTemplate.java create mode 100644 com/hbm/render/tileentity/RenderAssembler.java create mode 100644 com/hbm/tileentity/TileEntityMachineAssembler.java diff --git a/assets/hbm/models/assembler.obj b/assets/hbm/models/assembler.obj new file mode 100644 index 000000000..958d78356 --- /dev/null +++ b/assets/hbm/models/assembler.obj @@ -0,0 +1,1129 @@ +# Blender v2.76 (sub 0) OBJ File: 'assembler.blend' +# www.blender.org +o Cylinder +v 0.000000 1.162500 -0.750000 +v 0.000000 1.537500 -0.750000 +v 0.194114 1.162500 -0.724444 +v 0.194114 1.537500 -0.724444 +v 0.375000 1.162500 -0.649519 +v 0.375000 1.537500 -0.649519 +v 0.530330 1.162500 -0.530330 +v 0.530330 1.537500 -0.530330 +v 0.649519 1.162500 -0.375000 +v 0.649519 1.537500 -0.375000 +v 0.724444 1.162500 -0.194114 +v 0.724444 1.537500 -0.194114 +v 0.750000 1.162500 -0.000000 +v 0.750000 1.537500 -0.000000 +v 0.724444 1.162500 0.194114 +v 0.724444 1.537500 0.194114 +v 0.649519 1.162500 0.375000 +v 0.649519 1.537500 0.375000 +v 0.530330 1.162500 0.530330 +v 0.530330 1.537500 0.530330 +v 0.375000 1.162500 0.649519 +v 0.375000 1.537500 0.649519 +v 0.194115 1.162500 0.724444 +v 0.194115 1.537500 0.724444 +v 0.000000 1.162500 0.750000 +v 0.000000 1.537500 0.750000 +v -0.194114 1.162500 0.724444 +v -0.194114 1.537500 0.724444 +v -0.375000 1.162500 0.649519 +v -0.375000 1.537500 0.649519 +v -0.530330 1.162500 0.530330 +v -0.530330 1.537500 0.530330 +v -0.649519 1.162500 0.375000 +v -0.649519 1.537500 0.375000 +v -0.724444 1.162500 0.194115 +v -0.724444 1.537500 0.194115 +v -0.750000 1.162500 0.000000 +v -0.750000 1.537500 0.000000 +v -0.724444 1.162500 -0.194114 +v -0.724444 1.537500 -0.194114 +v -0.649519 1.162500 -0.375000 +v -0.649519 1.537500 -0.375000 +v -0.530330 1.162500 -0.530330 +v -0.530330 1.537500 -0.530330 +v -0.375000 1.162500 -0.649519 +v -0.375000 1.537500 -0.649519 +v -0.194115 1.162500 -0.724444 +v -0.194115 1.537500 -0.724444 +v 0.000000 1.162500 -0.562500 +v 0.000000 1.537500 -0.562500 +v 0.145586 1.162500 -0.543333 +v 0.145586 1.537500 -0.543333 +v 0.281250 1.162500 -0.487139 +v 0.281250 1.537500 -0.487139 +v 0.397748 1.162500 -0.397748 +v 0.397748 1.537500 -0.397748 +v 0.487139 1.162500 -0.281250 +v 0.487139 1.537500 -0.281250 +v 0.543333 1.162500 -0.145586 +v 0.543333 1.537500 -0.145586 +v 0.562500 1.162500 -0.000000 +v 0.562500 1.537500 -0.000000 +v 0.543333 1.162500 0.145586 +v 0.543333 1.537500 0.145586 +v 0.487139 1.162500 0.281250 +v 0.487139 1.537500 0.281250 +v 0.397748 1.162500 0.397747 +v 0.397748 1.537500 0.397747 +v 0.281250 1.162500 0.487139 +v 0.281250 1.537500 0.487139 +v 0.145586 1.162500 0.543333 +v 0.145586 1.537500 0.543333 +v 0.000000 1.162500 0.562500 +v 0.000000 1.537500 0.562500 +v -0.145585 1.162500 0.543333 +v -0.145585 1.537500 0.543333 +v -0.281250 1.162500 0.487139 +v -0.281250 1.537500 0.487139 +v -0.397747 1.162500 0.397748 +v -0.397747 1.537500 0.397748 +v -0.487139 1.162500 0.281250 +v -0.487139 1.537500 0.281250 +v -0.543333 1.162500 0.145586 +v -0.543333 1.537500 0.145586 +v -0.562500 1.162500 0.000000 +v -0.562500 1.537500 0.000000 +v -0.543333 1.162500 -0.145585 +v -0.543333 1.537500 -0.145585 +v -0.487139 1.162500 -0.281250 +v -0.487139 1.537500 -0.281250 +v -0.397748 1.162500 -0.397747 +v -0.397748 1.537500 -0.397747 +v -0.281250 1.162500 -0.487139 +v -0.281250 1.537500 -0.487139 +v -0.145586 1.162500 -0.543333 +v -0.145586 1.537500 -0.543333 +v 0.000000 1.537500 -0.281250 +v 0.072793 1.537500 -0.271667 +v 0.140625 1.537500 -0.243570 +v 0.198874 1.537500 -0.198874 +v 0.243570 1.537500 -0.140625 +v 0.271667 1.537500 -0.072793 +v 0.281250 1.537500 0.000000 +v 0.271667 1.537500 0.072793 +v 0.243570 1.537500 0.140625 +v 0.198874 1.537500 0.198874 +v 0.140625 1.537500 0.243570 +v 0.072793 1.537500 0.271667 +v 0.000000 1.537500 0.281250 +v -0.072793 1.537500 0.271667 +v -0.140625 1.537500 0.243570 +v -0.198874 1.537500 0.198874 +v -0.243570 1.537500 0.140625 +v -0.271667 1.537500 0.072793 +v -0.281250 1.537500 0.000000 +v -0.271667 1.537500 -0.072793 +v -0.243570 1.537500 -0.140625 +v -0.198874 1.537500 -0.198874 +v -0.140625 1.537500 -0.243569 +v -0.072793 1.537500 -0.271667 +v 0.000000 1.287500 0.281250 +v 0.072793 1.287500 0.271667 +v 0.140625 1.287500 0.243570 +v 0.198874 1.287500 0.198874 +v 0.243570 1.287500 0.140625 +v 0.271667 1.287500 0.072793 +v 0.281250 1.287500 0.000000 +v 0.271667 1.287500 -0.072793 +v 0.243570 1.287500 -0.140625 +v 0.198874 1.287500 -0.198874 +v 0.140625 1.287500 -0.243570 +v 0.072793 1.287500 -0.271667 +v 0.000000 1.287500 -0.281250 +v -0.072793 1.287500 0.271667 +v -0.140625 1.287500 0.243570 +v -0.198874 1.287500 0.198874 +v -0.243570 1.287500 0.140625 +v -0.271667 1.287500 0.072793 +v -0.281250 1.287500 0.000000 +v -0.271667 1.287500 -0.072793 +v -0.243570 1.287500 -0.140625 +v -0.198874 1.287500 -0.198874 +v -0.140625 1.287500 -0.243569 +v -0.072793 1.287500 -0.271667 +vn 0.258800 0.000000 0.965900 +vn 0.382700 0.000000 -0.923900 +vn -0.000000 0.000000 -1.000000 +vn 0.793400 0.000000 -0.608800 +vn -0.258800 0.000000 0.965900 +vn 0.991400 0.000000 -0.130500 +vn 0.500000 0.000000 -0.866000 +vn 0.923900 0.000000 0.382700 +vn -0.707100 0.000000 0.707100 +vn 0.608800 0.000000 0.793400 +vn 0.866000 0.000000 -0.500000 +vn 0.130500 0.000000 0.991400 +vn -0.965900 0.000000 0.258800 +vn -0.382700 0.000000 0.923900 +vn 1.000000 0.000000 -0.000000 +vn -0.793400 0.000000 0.608800 +vn -0.965900 0.000000 -0.258800 +vn -0.991400 0.000000 0.130500 +vn 0.866000 0.000000 0.500000 +vn -0.923900 0.000000 -0.382700 +vn -0.707100 0.000000 -0.707100 +vn -0.608800 0.000000 -0.793400 +vn 0.000000 1.000000 -0.000000 +vn -0.130500 0.000000 -0.991400 +vn 0.500000 0.000000 0.866000 +vn 0.130500 0.000000 -0.991400 +vn -0.258800 0.000000 -0.965900 +vn 0.608800 0.000000 -0.793400 +vn 0.000000 0.000000 1.000000 +vn 0.923900 0.000000 -0.382700 +vn 0.258800 0.000000 -0.965900 +vn 0.991400 0.000000 0.130500 +vn -0.500000 0.000000 0.866000 +vn 0.793400 0.000000 0.608800 +vn 0.707100 0.000000 -0.707100 +vn 0.382700 0.000000 0.923900 +vn -0.866000 0.000000 0.500000 +vn -0.130500 0.000000 0.991400 +vn -0.500000 0.000000 -0.866000 +vn -0.608800 0.000000 0.793400 +vn 0.965900 0.000000 -0.258800 +vn -0.923900 0.000000 0.382700 +vn -1.000000 0.000000 0.000000 +vn -0.991400 0.000000 -0.130500 +vn 0.965900 0.000000 0.258800 +vn -0.793400 0.000000 -0.608800 +vn -0.866000 0.000000 -0.500000 +vn 0.707100 0.000000 0.707100 +vn -0.382700 0.000000 -0.923900 +s off +f 83//1 84//1 36//1 +f 4//2 6//2 5//2 +f 38//3 86//3 85//3 +f 8//4 10//4 9//4 +f 87//5 88//5 40//5 +f 12//6 14//6 13//6 +f 42//7 90//7 89//7 +f 16//8 18//8 17//8 +f 91//9 92//9 44//9 +f 20//10 22//10 21//10 +f 46//11 94//11 93//11 +f 24//12 26//12 25//12 +f 95//13 96//13 48//13 +f 28//14 30//14 29//14 +f 50//15 49//15 1//15 +f 32//16 34//16 33//16 +f 51//17 52//17 4//17 +f 36//18 38//18 37//18 +f 6//19 54//19 53//19 +f 40//20 42//20 41//20 +f 55//21 56//21 8//21 +f 44//22 46//22 45//22 +f 80//23 82//23 34//23 +f 48//24 2//24 1//24 +f 9//25 10//25 58//25 +f 36//23 84//23 86//23 +f 50//26 52//26 51//26 +f 60//27 12//27 11//27 +f 54//28 56//28 55//28 +f 13//29 14//29 62//29 +f 58//30 60//30 59//30 +f 64//31 16//31 15//31 +f 62//32 64//32 63//32 +f 18//33 66//33 65//33 +f 66//34 68//34 67//34 +f 67//35 68//35 20//35 +f 70//36 72//36 71//36 +f 22//37 70//37 69//37 +f 74//38 76//38 75//38 +f 34//39 82//39 81//39 +f 78//40 80//40 79//40 +f 71//41 72//41 24//41 +f 82//42 84//42 83//42 +f 26//43 74//43 73//43 +f 86//44 88//44 87//44 +f 75//45 76//45 28//45 +f 90//46 92//46 91//46 +f 30//47 78//47 77//47 +f 79//48 80//48 32//48 +f 94//49 96//49 95//49 +f 107//23 70//23 68//23 +f 76//23 78//23 30//23 +f 72//23 74//23 26//23 +f 20//23 68//23 70//23 +f 66//23 18//23 16//23 +f 60//23 62//23 14//23 +f 58//23 10//23 8//23 +f 52//23 54//23 6//23 +f 96//23 50//23 2//23 +f 44//23 92//23 94//23 +f 88//23 90//23 42//23 +f 108//23 72//23 70//23 +f 116//8 140//8 141//8 +f 105//46 125//46 124//46 +f 109//26 121//26 134//26 +f 100//16 130//16 129//16 +f 117//34 141//34 142//34 +f 110//2 134//2 135//2 +f 106//22 124//22 123//22 +f 118//10 142//10 143//10 +f 101//42 129//42 128//42 +f 111//28 135//28 136//28 +f 119//36 143//36 144//36 +f 107//49 123//49 122//49 +f 112//4 136//4 137//4 +f 102//18 128//18 127//18 +f 120//12 144//12 133//12 +f 97//38 133//38 132//38 +f 113//30 137//30 138//30 +f 108//24 122//24 121//24 +f 103//44 127//44 126//44 +f 114//6 138//6 139//6 +f 98//14 132//14 131//14 +f 115//32 139//32 140//32 +f 104//20 126//20 125//20 +f 99//40 131//40 130//40 +f 105//23 106//23 68//23 +f 64//23 104//23 105//23 +f 103//23 104//23 64//23 +f 102//23 103//23 62//23 +f 101//23 102//23 60//23 +f 100//23 101//23 58//23 +f 99//23 100//23 56//23 +f 52//23 98//23 99//23 +f 97//23 98//23 52//23 +f 120//23 97//23 50//23 +f 119//23 120//23 96//23 +f 118//23 119//23 94//23 +f 117//23 118//23 92//23 +f 116//23 117//23 90//23 +f 115//23 116//23 88//23 +f 84//23 114//23 115//23 +f 82//23 113//23 114//23 +f 112//23 113//23 82//23 +f 78//23 111//23 112//23 +f 110//23 111//23 78//23 +f 74//23 109//23 110//23 +f 108//23 109//23 74//23 +f 35//1 83//1 36//1 +f 3//2 4//2 5//2 +f 37//3 38//3 85//3 +f 7//4 8//4 9//4 +f 39//5 87//5 40//5 +f 11//6 12//6 13//6 +f 41//7 42//7 89//7 +f 15//8 16//8 17//8 +f 43//9 91//9 44//9 +f 19//10 20//10 21//10 +f 45//11 46//11 93//11 +f 23//12 24//12 25//12 +f 47//13 95//13 48//13 +f 27//14 28//14 29//14 +f 2//15 50//15 1//15 +f 31//16 32//16 33//16 +f 3//17 51//17 4//17 +f 35//18 36//18 37//18 +f 5//19 6//19 53//19 +f 39//20 40//20 41//20 +f 7//21 55//21 8//21 +f 43//22 44//22 45//22 +f 32//23 80//23 34//23 +f 47//24 48//24 1//24 +f 57//25 9//25 58//25 +f 38//23 36//23 86//23 +f 49//26 50//26 51//26 +f 59//27 60//27 11//27 +f 53//28 54//28 55//28 +f 61//29 13//29 62//29 +f 57//30 58//30 59//30 +f 63//31 64//31 15//31 +f 61//32 62//32 63//32 +f 17//33 18//33 65//33 +f 65//34 66//34 67//34 +f 19//35 67//35 20//35 +f 69//36 70//36 71//36 +f 21//37 22//37 69//37 +f 73//38 74//38 75//38 +f 33//39 34//39 81//39 +f 77//40 78//40 79//40 +f 23//41 71//41 24//41 +f 81//42 82//42 83//42 +f 25//43 26//43 73//43 +f 85//44 86//44 87//44 +f 27//45 75//45 28//45 +f 89//46 90//46 91//46 +f 29//47 30//47 77//47 +f 31//48 79//48 32//48 +f 93//49 94//49 95//49 +f 106//23 107//23 68//23 +f 28//23 76//23 30//23 +f 24//23 72//23 26//23 +f 22//23 20//23 70//23 +f 64//23 66//23 16//23 +f 12//23 60//23 14//23 +f 56//23 58//23 8//23 +f 4//23 52//23 6//23 +f 48//23 96//23 2//23 +f 46//23 44//23 94//23 +f 40//23 88//23 42//23 +f 107//23 108//23 70//23 +f 117//8 116//8 141//8 +f 106//46 105//46 124//46 +f 110//26 109//26 134//26 +f 101//16 100//16 129//16 +f 118//34 117//34 142//34 +f 111//2 110//2 135//2 +f 107//22 106//22 123//22 +f 119//10 118//10 143//10 +f 102//42 101//42 128//42 +f 112//28 111//28 136//28 +f 120//36 119//36 144//36 +f 108//49 107//49 122//49 +f 113//4 112//4 137//4 +f 103//18 102//18 127//18 +f 97//12 120//12 133//12 +f 98//38 97//38 132//38 +f 114//30 113//30 138//30 +f 109//24 108//24 121//24 +f 104//44 103//44 126//44 +f 115//6 114//6 139//6 +f 99//14 98//14 131//14 +f 116//32 115//32 140//32 +f 105//20 104//20 125//20 +f 100//40 99//40 130//40 +f 66//23 105//23 68//23 +f 66//23 64//23 105//23 +f 62//23 103//23 64//23 +f 60//23 102//23 62//23 +f 58//23 101//23 60//23 +f 56//23 100//23 58//23 +f 54//23 99//23 56//23 +f 54//23 52//23 99//23 +f 50//23 97//23 52//23 +f 96//23 120//23 50//23 +f 94//23 119//23 96//23 +f 92//23 118//23 94//23 +f 90//23 117//23 92//23 +f 88//23 116//23 90//23 +f 86//23 115//23 88//23 +f 86//23 84//23 115//23 +f 84//23 82//23 114//23 +f 80//23 112//23 82//23 +f 80//23 78//23 112//23 +f 76//23 110//23 78//23 +f 76//23 74//23 110//23 +f 72//23 108//23 74//23 +o Cube_Cube.001 +v -1.500000 0.000000 1.500000 +v -1.500000 0.250000 1.500000 +v -1.500000 0.000000 -1.500000 +v -1.500000 0.250000 -1.500000 +v 1.500000 0.000000 1.500000 +v 1.500000 0.250000 1.500000 +v 1.500000 0.000000 -1.500000 +v 1.500000 0.250000 -1.500000 +v -1.250000 0.500000 1.250000 +v -1.250000 0.500000 -1.250000 +v 1.250000 0.500000 -1.250000 +v 1.250000 0.500000 1.250000 +v 1.250000 1.000000 -1.250000 +v -1.250000 1.000000 -1.250000 +v -1.250000 1.000000 1.250000 +v 1.250000 1.000000 1.250000 +v 1.062500 1.500000 -1.062500 +v 1.062500 1.500000 1.062500 +v 1.000000 0.250000 -0.250000 +v 1.000000 0.750000 -0.250000 +v 1.000000 0.250000 -0.750000 +v 1.000000 0.750000 -0.750000 +v 2.000000 0.000000 0.000000 +v 2.000000 1.000000 0.000000 +v 2.000000 0.000000 -1.000000 +v 2.000000 1.000000 -1.000000 +v 1.500000 1.000000 -1.000000 +v 1.500000 0.000000 -1.000000 +v 1.500000 1.000000 0.000000 +v 1.500000 0.000000 0.000000 +v 2.000000 0.875000 -0.875000 +v 2.000000 0.125000 -0.875000 +v 2.000000 0.875000 -0.125000 +v 2.000000 0.125000 -0.125000 +v 1.500000 0.687500 -0.687500 +v 1.500000 0.312500 -0.687500 +v 1.500000 0.687500 -0.312500 +v 1.500000 0.312500 -0.312500 +v -1.000000 0.250000 0.750000 +v -1.000000 0.750000 0.750000 +v -1.000000 0.250000 0.250000 +v -1.000000 0.750000 0.250000 +v -2.000000 0.000000 1.000000 +v -2.000000 1.000000 1.000000 +v -2.000000 0.000000 0.000000 +v -2.000000 1.000000 0.000000 +v -1.500000 1.000000 0.000000 +v -1.500000 0.000000 0.000000 +v -1.500000 1.000000 1.000000 +v -1.500000 0.000000 1.000000 +v -2.000000 0.875000 0.125000 +v -2.000000 0.125000 0.125000 +v -2.000000 0.875000 0.875000 +v -2.000000 0.125000 0.875000 +v -1.500000 0.687500 0.312500 +v -1.500000 0.312500 0.312500 +v -1.500000 0.687500 0.687500 +v -1.500000 0.312500 0.687500 +v 0.656250 0.343750 -2.000000 +v 0.656250 0.656250 -2.000000 +v 0.343750 0.343750 -1.150000 +v 0.343750 0.656250 -1.150000 +v 0.343750 0.343750 -2.000000 +v 0.343750 0.656250 -2.000000 +v 0.656250 0.343750 -1.150000 +v 0.656250 0.656250 -1.150000 +v 0.328125 0.671875 -1.150000 +v 0.328125 0.328125 -1.150000 +v 0.671875 0.671875 -1.150000 +v 0.671875 0.328125 -1.150000 +v 0.328125 0.671875 -1.000000 +v 0.328125 0.328125 -1.000000 +v 0.671875 0.671875 -1.000000 +v 0.671875 0.328125 -1.000000 +v -0.343750 0.343750 -2.000000 +v -0.343750 0.656250 -2.000000 +v -0.656250 0.343750 -1.150000 +v -0.656250 0.656250 -1.150000 +v -0.656250 0.343750 -2.000000 +v -0.656250 0.656250 -2.000000 +v -0.343750 0.343750 -1.150000 +v -0.343750 0.656250 -1.150000 +v -0.671875 0.671875 -1.150000 +v -0.671875 0.328125 -1.150000 +v -0.328125 0.671875 -1.150000 +v -0.328125 0.328125 -1.150000 +v -0.671875 0.671875 -1.000000 +v -0.671875 0.328125 -1.000000 +v -0.328125 0.671875 -1.000000 +v -0.328125 0.328125 -1.000000 +v -0.343750 0.343750 2.000000 +v -0.343750 0.656250 2.000000 +v -0.656250 0.343750 1.150000 +v -0.656250 0.656250 1.150000 +v -0.656250 0.343750 2.000000 +v -0.656250 0.656250 2.000000 +v -0.343750 0.343750 1.150000 +v -0.343750 0.656250 1.150000 +v -0.671875 0.671875 1.150000 +v -0.671875 0.328125 1.150000 +v -0.328125 0.671875 1.150000 +v -0.328125 0.328125 1.150000 +v -0.671875 0.671875 1.000000 +v -0.671875 0.328125 1.000000 +v -0.328125 0.671875 1.000000 +v -0.328125 0.328125 1.000000 +v 0.656250 0.343750 2.000000 +v 0.656250 0.656250 2.000000 +v 0.343750 0.343750 1.150000 +v 0.343750 0.656250 1.150000 +v 0.343750 0.343750 2.000000 +v 0.343750 0.656250 2.000000 +v 0.656250 0.343750 1.150000 +v 0.656250 0.656250 1.150000 +v 0.328125 0.671875 1.150000 +v 0.328125 0.328125 1.150000 +v 0.671875 0.671875 1.150000 +v 0.671875 0.328125 1.150000 +v 0.328125 0.671875 1.000000 +v 0.328125 0.328125 1.000000 +v 0.671875 0.671875 1.000000 +v 0.671875 0.328125 1.000000 +v -1.062500 1.500000 -1.062500 +v -1.062500 1.500000 1.062500 +v 0.903125 1.500000 0.903125 +v 0.903125 1.500000 -0.903125 +v -0.903125 1.500000 -0.903125 +v -0.903125 1.500000 0.903125 +v 0.903125 1.350000 0.903125 +v 0.903125 1.350000 -0.903125 +v -0.903125 1.350000 -0.903125 +v -0.903125 1.350000 0.903125 +v 0.817113 1.500000 0.903125 +v 0.731101 1.500000 0.903125 +v 0.645089 1.500000 0.903125 +v 0.559078 1.500000 0.903125 +v 0.473066 1.500000 0.903125 +v 0.387054 1.500000 0.903125 +v 0.301042 1.500000 0.903125 +v 0.215030 1.500000 0.903125 +v 0.129018 1.500000 0.903125 +v 0.043006 1.500000 0.903125 +v -0.043006 1.500000 0.903125 +v -0.129018 1.500000 0.903125 +v -0.215030 1.500000 0.903125 +v -0.301042 1.500000 0.903125 +v -0.387054 1.500000 0.903125 +v -0.473065 1.500000 0.903125 +v -0.559077 1.500000 0.903125 +v -0.645089 1.500000 0.903125 +v -0.731101 1.500000 0.903125 +v -0.817113 1.500000 0.903125 +v 0.817113 1.750000 0.903125 +v 0.731101 1.750000 0.903125 +v 0.645089 1.750000 0.903125 +v 0.559078 1.750000 0.903125 +v 0.473066 1.750000 0.903125 +v 0.387054 1.750000 0.903125 +v 0.301042 1.750000 0.903125 +v 0.215030 1.750000 0.903125 +v 0.129018 1.750000 0.903125 +v 0.043006 1.750000 0.903125 +v -0.043006 1.750000 0.903125 +v -0.129018 1.750000 0.903125 +v -0.215030 1.750000 0.903125 +v -0.301042 1.750000 0.903125 +v -0.387054 1.750000 0.903125 +v -0.473065 1.750000 0.903125 +v -0.559077 1.750000 0.903125 +v -0.645089 1.750000 0.903125 +v -0.731101 1.750000 0.903125 +v -0.817113 1.750000 0.903125 +v 0.817113 2.000000 0.653125 +v 0.731101 2.000000 0.653125 +v 0.645089 2.000000 0.653125 +v 0.559078 2.000000 0.653125 +v 0.473066 2.000000 0.653125 +v 0.387054 2.000000 0.653125 +v 0.301042 2.000000 0.653125 +v 0.215030 2.000000 0.653125 +v 0.129018 2.000000 0.653125 +v 0.043006 2.000000 0.653125 +v -0.043006 2.000000 0.653125 +v -0.129018 2.000000 0.653125 +v -0.215030 2.000000 0.653125 +v -0.301042 2.000000 0.653125 +v -0.387054 2.000000 0.653125 +v -0.473065 2.000000 0.653125 +v -0.559077 2.000000 0.653125 +v -0.645089 2.000000 0.653125 +v -0.731101 2.000000 0.653125 +v -0.817113 2.000000 0.653125 +v -0.817113 1.500000 -0.903125 +v -0.731101 1.500000 -0.903125 +v -0.645089 1.500000 -0.903125 +v -0.559078 1.500000 -0.903125 +v -0.473066 1.500000 -0.903125 +v -0.387054 1.500000 -0.903125 +v -0.301042 1.500000 -0.903125 +v -0.215030 1.500000 -0.903125 +v -0.129018 1.500000 -0.903125 +v -0.043006 1.500000 -0.903125 +v 0.043006 1.500000 -0.903125 +v 0.129018 1.500000 -0.903125 +v 0.215030 1.500000 -0.903125 +v 0.301042 1.500000 -0.903125 +v 0.387054 1.500000 -0.903125 +v 0.473065 1.500000 -0.903125 +v 0.559077 1.500000 -0.903125 +v 0.645089 1.500000 -0.903125 +v 0.731101 1.500000 -0.903125 +v 0.817113 1.500000 -0.903125 +v -0.817113 1.750000 -0.903125 +v -0.731101 1.750000 -0.903125 +v -0.645089 1.750000 -0.903125 +v -0.559078 1.750000 -0.903125 +v -0.473066 1.750000 -0.903125 +v -0.387054 1.750000 -0.903125 +v -0.301042 1.750000 -0.903125 +v -0.215030 1.750000 -0.903125 +v -0.129018 1.750000 -0.903125 +v -0.043006 1.750000 -0.903125 +v 0.043006 1.750000 -0.903125 +v 0.129018 1.750000 -0.903125 +v 0.215030 1.750000 -0.903125 +v 0.301042 1.750000 -0.903125 +v 0.387054 1.750000 -0.903125 +v 0.473065 1.750000 -0.903125 +v 0.559077 1.750000 -0.903125 +v 0.645089 1.750000 -0.903125 +v 0.731101 1.750000 -0.903125 +v 0.817113 1.750000 -0.903125 +v -0.817113 2.000000 -0.653125 +v -0.731101 2.000000 -0.653125 +v -0.645089 2.000000 -0.653125 +v -0.559078 2.000000 -0.653125 +v -0.473066 2.000000 -0.653125 +v -0.387054 2.000000 -0.653125 +v -0.301042 2.000000 -0.653125 +v -0.215030 2.000000 -0.653125 +v -0.129018 2.000000 -0.653125 +v -0.043006 2.000000 -0.653125 +v 0.043006 2.000000 -0.653125 +v 0.129018 2.000000 -0.653125 +v 0.215030 2.000000 -0.653125 +v 0.301042 2.000000 -0.653125 +v 0.387054 2.000000 -0.653125 +v 0.473065 2.000000 -0.653125 +v 0.559077 2.000000 -0.653125 +v 0.645089 2.000000 -0.653125 +v 0.731101 2.000000 -0.653125 +v 0.817113 2.000000 -0.653125 +v 1.916667 0.250000 -1.100000 +v 1.916667 0.750000 -1.100000 +v 1.666667 0.500000 -1.100000 +v 1.916667 0.250000 0.100000 +v 1.916667 0.750000 0.100000 +v 1.666667 0.500000 0.100000 +v -1.583333 0.250000 -0.100000 +v -1.583333 0.750000 -0.100000 +v -1.833333 0.500000 -0.100000 +v -1.583333 0.250000 1.100000 +v -1.583333 0.750000 1.100000 +v -1.833333 0.500000 1.100000 +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.707100 0.707100 0.000000 +vn 0.000000 0.707100 -0.707100 +vn 0.000000 0.707100 0.707100 +vn -0.447200 0.000000 0.894400 +vn -0.447200 0.894400 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.447200 -0.894400 0.000000 +vn -0.447200 0.000000 -0.894400 +vn 0.351100 0.000000 -0.936300 +vn 0.351100 0.000000 0.936300 +vn 0.351100 0.936300 0.000000 +vn 0.351100 -0.936300 0.000000 +vn 0.447200 0.000000 0.894400 +vn 0.447200 0.894400 0.000000 +vn 0.447200 -0.894400 0.000000 +vn 0.447200 0.000000 -0.894400 +vn -0.351100 0.000000 -0.936300 +vn -0.351100 0.000000 0.936300 +vn -0.351100 0.936300 0.000000 +vn -0.351100 -0.936300 0.000000 +vn 0.000000 0.351100 0.936300 +vn 0.000000 0.351100 -0.936300 +vn -0.936300 0.351100 0.000000 +vn 0.936300 0.351100 0.000000 +s off +f 148//50 147//50 145//50 +f 152//51 151//51 147//51 +f 150//52 149//52 151//52 +f 146//53 145//53 149//53 +f 147//54 151//54 149//54 +f 156//55 150//55 152//55 +f 148//56 146//56 153//56 +f 152//57 148//57 154//57 +f 150//58 156//58 153//58 +f 154//51 158//51 157//51 +f 166//50 165//50 163//50 +f 170//51 169//51 172//51 +f 169//52 176//52 178//52 +f 164//59 163//59 174//59 +f 172//54 169//54 167//54 +f 171//60 166//60 164//60 +f 170//61 171//61 173//61 +f 165//62 172//62 174//62 +f 173//53 174//53 167//53 +f 171//63 172//63 165//63 +f 178//64 182//64 181//64 +f 168//52 177//52 175//52 +f 170//52 175//52 176//52 +f 167//52 178//52 177//52 +f 181//52 182//52 180//52 +f 175//65 179//65 180//65 +f 176//66 180//66 182//66 +f 177//67 181//67 179//67 +f 183//52 185//52 186//52 +f 192//51 189//51 190//51 +f 198//50 196//50 189//50 +f 194//68 183//68 184//68 +f 187//54 189//54 192//54 +f 184//69 186//69 191//69 +f 193//61 191//61 190//61 +f 194//70 192//70 185//70 +f 187//53 194//53 193//53 +f 185//71 192//71 191//71 +f 201//72 202//72 198//72 +f 195//50 197//50 188//50 +f 196//50 195//50 190//50 +f 197//50 198//50 187//50 +f 200//50 202//50 201//50 +f 200//73 199//73 195//73 +f 202//74 200//74 196//74 +f 199//75 201//75 197//75 +f 209//52 203//52 204//52 +f 209//51 214//51 212//51 +f 206//50 208//50 207//50 +f 210//61 204//61 208//61 +f 205//54 207//54 203//54 +f 204//51 203//51 207//51 +f 214//54 218//54 216//54 +f 206//51 211//51 213//51 +f 205//51 212//51 211//51 +f 210//51 213//51 214//51 +f 216//53 218//53 217//53 +f 211//61 215//61 217//61 +f 213//52 217//52 218//52 +f 212//50 216//50 215//50 +f 225//52 219//52 220//52 +f 225//51 230//51 228//51 +f 222//50 224//50 223//50 +f 226//61 220//61 224//61 +f 221//54 223//54 219//54 +f 220//51 219//51 223//51 +f 230//54 234//54 232//54 +f 222//51 227//51 229//51 +f 221//51 228//51 227//51 +f 226//51 229//51 230//51 +f 232//53 234//53 233//53 +f 227//61 231//61 233//61 +f 229//52 233//52 234//52 +f 228//50 232//50 231//50 +f 236//52 235//52 241//52 +f 244//53 246//53 241//53 +f 239//50 240//50 238//50 +f 240//61 236//61 242//61 +f 235//54 239//54 237//54 +f 239//53 235//53 236//53 +f 248//54 250//54 246//54 +f 245//53 243//53 238//53 +f 243//53 244//53 237//53 +f 246//53 245//53 242//53 +f 249//51 250//51 248//51 +f 249//61 247//61 243//61 +f 250//52 249//52 245//52 +f 247//50 248//50 244//50 +f 252//52 251//52 257//52 +f 260//53 262//53 257//53 +f 255//50 256//50 254//50 +f 256//61 252//61 258//61 +f 251//54 255//54 253//54 +f 255//53 251//53 252//53 +f 264//54 266//54 262//54 +f 261//53 259//53 254//53 +f 259//53 260//53 253//53 +f 262//53 261//53 258//53 +f 265//51 266//51 264//51 +f 265//61 263//61 259//61 +f 266//52 265//52 261//52 +f 263//50 264//50 260//50 +f 160//76 162//76 268//76 +f 156//53 160//53 159//53 +f 155//52 157//52 160//52 +f 153//50 159//50 158//50 +f 162//61 287//61 268//61 +f 158//77 267//77 161//77 +f 159//78 268//78 267//78 +f 157//79 161//79 162//79 +f 272//52 276//52 275//52 +f 267//61 347//61 161//61 +f 268//61 272//61 271//61 +f 161//61 270//61 269//61 +f 274//61 275//61 276//61 +f 270//50 274//50 273//50 +f 286//51 273//51 276//51 +f 346//53 275//53 274//53 +f 337//51 357//51 358//51 +f 339//51 359//51 360//51 +f 341//51 361//51 362//51 +f 343//51 363//51 364//51 +f 345//51 365//51 366//51 +f 347//51 367//51 368//51 +f 349//51 369//51 370//51 +f 351//51 371//51 372//51 +f 353//51 373//51 374//51 +f 355//51 375//51 376//51 +f 375//57 395//57 396//57 +f 373//57 393//57 394//57 +f 371//57 391//57 392//57 +f 369//57 389//57 390//57 +f 367//57 387//57 388//57 +f 365//57 385//57 386//57 +f 363//57 383//57 384//57 +f 361//57 381//57 382//57 +f 359//57 379//57 380//57 +f 357//57 377//57 378//57 +f 315//58 335//58 336//58 +f 313//58 333//58 334//58 +f 291//53 311//53 312//53 +f 293//53 313//53 314//53 +f 295//53 315//53 316//53 +f 289//53 309//53 310//53 +f 287//53 307//53 308//53 +f 285//53 305//53 306//53 +f 283//53 303//53 304//53 +f 281//53 301//53 302//53 +f 279//53 299//53 300//53 +f 277//53 297//53 298//53 +f 297//58 317//58 318//58 +f 299//58 319//58 320//58 +f 301//58 321//58 322//58 +f 303//58 323//58 324//58 +f 305//58 325//58 326//58 +f 307//58 327//58 328//58 +f 309//58 329//58 330//58 +f 311//58 331//58 332//58 +f 396//61 395//61 318//61 +f 394//61 393//61 320//61 +f 392//61 391//61 322//61 +f 390//61 389//61 324//61 +f 388//61 387//61 326//61 +f 386//61 385//61 328//61 +f 378//61 377//61 336//61 +f 380//61 379//61 334//61 +f 382//61 381//61 332//61 +f 384//61 383//61 330//61 +f 398//51 397//51 399//51 +f 401//53 402//53 400//53 +f 404//51 403//51 405//51 +f 407//53 408//53 406//53 +f 146//50 148//50 145//50 +f 148//51 152//51 147//51 +f 152//52 150//52 151//52 +f 150//53 146//53 149//53 +f 145//54 147//54 149//54 +f 155//55 156//55 152//55 +f 154//56 148//56 153//56 +f 155//57 152//57 154//57 +f 146//58 150//58 153//58 +f 155//51 154//51 157//51 +f 164//50 166//50 163//50 +f 171//51 170//51 172//51 +f 167//52 169//52 178//52 +f 173//59 164//59 174//59 +f 174//54 172//54 167//54 +f 173//60 171//60 164//60 +f 168//61 170//61 173//61 +f 163//62 165//62 174//62 +f 168//53 173//53 167//53 +f 166//63 171//63 165//63 +f 177//64 178//64 181//64 +f 170//52 168//52 175//52 +f 169//52 170//52 176//52 +f 168//52 167//52 177//52 +f 179//52 181//52 180//52 +f 176//65 175//65 180//65 +f 178//66 176//66 182//66 +f 175//67 177//67 179//67 +f 184//52 183//52 186//52 +f 191//51 192//51 190//51 +f 187//50 198//50 189//50 +f 193//68 194//68 184//68 +f 194//54 187//54 192//54 +f 193//69 184//69 191//69 +f 188//61 193//61 190//61 +f 183//70 194//70 185//70 +f 188//53 187//53 193//53 +f 186//71 185//71 191//71 +f 197//72 201//72 198//72 +f 190//50 195//50 188//50 +f 189//50 196//50 190//50 +f 188//50 197//50 187//50 +f 199//50 200//50 201//50 +f 196//73 200//73 195//73 +f 198//74 202//74 196//74 +f 195//75 199//75 197//75 +f 210//52 209//52 204//52 +f 205//51 209//51 212//51 +f 205//50 206//50 207//50 +f 206//61 210//61 208//61 +f 209//54 205//54 203//54 +f 208//51 204//51 207//51 +f 212//54 214//54 216//54 +f 210//51 206//51 213//51 +f 206//51 205//51 211//51 +f 209//51 210//51 214//51 +f 215//53 216//53 217//53 +f 213//61 211//61 217//61 +f 214//52 213//52 218//52 +f 211//50 212//50 215//50 +f 226//52 225//52 220//52 +f 221//51 225//51 228//51 +f 221//50 222//50 223//50 +f 222//61 226//61 224//61 +f 225//54 221//54 219//54 +f 224//51 220//51 223//51 +f 228//54 230//54 232//54 +f 226//51 222//51 229//51 +f 222//51 221//51 227//51 +f 225//51 226//51 230//51 +f 231//53 232//53 233//53 +f 229//61 227//61 233//61 +f 230//52 229//52 234//52 +f 227//50 228//50 231//50 +f 242//52 236//52 241//52 +f 237//53 244//53 241//53 +f 237//50 239//50 238//50 +f 238//61 240//61 242//61 +f 241//54 235//54 237//54 +f 240//53 239//53 236//53 +f 244//54 248//54 246//54 +f 242//53 245//53 238//53 +f 238//53 243//53 237//53 +f 241//53 246//53 242//53 +f 247//51 249//51 248//51 +f 245//61 249//61 243//61 +f 246//52 250//52 245//52 +f 243//50 247//50 244//50 +f 258//52 252//52 257//52 +f 253//53 260//53 257//53 +f 253//50 255//50 254//50 +f 254//61 256//61 258//61 +f 257//54 251//54 253//54 +f 256//53 255//53 252//53 +f 260//54 264//54 262//54 +f 258//53 261//53 254//53 +f 254//53 259//53 253//53 +f 257//53 262//53 258//53 +f 263//51 265//51 264//51 +f 261//61 265//61 259//61 +f 262//52 266//52 261//52 +f 259//50 263//50 260//50 +f 159//76 160//76 268//76 +f 153//53 156//53 159//53 +f 156//52 155//52 160//52 +f 154//50 153//50 158//50 +f 272//61 268//61 296//61 +f 162//61 269//61 277//61 +f 277//61 278//61 162//61 +f 279//61 280//61 162//61 +f 281//61 282//61 162//61 +f 283//61 284//61 162//61 +f 285//61 286//61 162//61 +f 287//61 288//61 268//61 +f 289//61 290//61 268//61 +f 291//61 292//61 268//61 +f 293//61 294//61 268//61 +f 295//61 296//61 268//61 +f 162//61 278//61 279//61 +f 295//61 268//61 294//61 +f 292//61 293//61 268//61 +f 288//61 289//61 268//61 +f 284//61 285//61 162//61 +f 280//61 281//61 162//61 +f 291//61 268//61 290//61 +f 162//61 282//61 283//61 +f 286//61 287//61 162//61 +f 157//77 158//77 161//77 +f 158//78 159//78 267//78 +f 160//79 157//79 162//79 +f 271//52 272//52 275//52 +f 270//61 161//61 356//61 +f 267//61 271//61 337//61 +f 337//61 338//61 267//61 +f 339//61 340//61 267//61 +f 341//61 342//61 267//61 +f 343//61 344//61 267//61 +f 345//61 346//61 267//61 +f 347//61 348//61 161//61 +f 349//61 350//61 161//61 +f 351//61 352//61 161//61 +f 353//61 354//61 161//61 +f 355//61 356//61 161//61 +f 267//61 338//61 339//61 +f 355//61 161//61 354//61 +f 352//61 353//61 161//61 +f 348//61 349//61 161//61 +f 344//61 345//61 267//61 +f 340//61 341//61 267//61 +f 351//61 161//61 350//61 +f 267//61 342//61 343//61 +f 346//61 347//61 267//61 +f 267//61 268//61 271//61 +f 162//61 161//61 269//61 +f 273//61 274//61 276//61 +f 269//50 270//50 273//50 +f 276//51 272//51 296//51 +f 296//51 295//51 276//51 +f 294//51 293//51 276//51 +f 292//51 291//51 276//51 +f 290//51 289//51 276//51 +f 288//51 287//51 276//51 +f 286//51 285//51 273//51 +f 284//51 283//51 273//51 +f 282//51 281//51 273//51 +f 280//51 279//51 273//51 +f 278//51 277//51 273//51 +f 269//51 273//51 277//51 +f 276//51 295//51 294//51 +f 293//51 292//51 276//51 +f 289//51 288//51 276//51 +f 285//51 284//51 273//51 +f 281//51 280//51 273//51 +f 278//51 273//51 279//51 +f 276//51 291//51 290//51 +f 287//51 286//51 276//51 +f 282//51 273//51 283//51 +f 274//53 270//53 356//53 +f 356//53 355//53 274//53 +f 354//53 353//53 274//53 +f 352//53 351//53 274//53 +f 350//53 349//53 274//53 +f 348//53 347//53 274//53 +f 346//53 345//53 275//53 +f 344//53 343//53 275//53 +f 342//53 341//53 275//53 +f 340//53 339//53 275//53 +f 338//53 337//53 275//53 +f 271//53 275//53 337//53 +f 274//53 355//53 354//53 +f 353//53 352//53 274//53 +f 349//53 348//53 274//53 +f 345//53 344//53 275//53 +f 341//53 340//53 275//53 +f 338//53 275//53 339//53 +f 274//53 351//53 350//53 +f 347//53 346//53 274//53 +f 342//53 275//53 343//53 +f 338//51 337//51 358//51 +f 340//51 339//51 360//51 +f 342//51 341//51 362//51 +f 344//51 343//51 364//51 +f 346//51 345//51 366//51 +f 348//51 347//51 368//51 +f 350//51 349//51 370//51 +f 352//51 351//51 372//51 +f 354//51 353//51 374//51 +f 356//51 355//51 376//51 +f 376//57 375//57 396//57 +f 374//57 373//57 394//57 +f 372//57 371//57 392//57 +f 370//57 369//57 390//57 +f 368//57 367//57 388//57 +f 366//57 365//57 386//57 +f 364//57 363//57 384//57 +f 362//57 361//57 382//57 +f 360//57 359//57 380//57 +f 358//57 357//57 378//57 +f 316//58 315//58 336//58 +f 314//58 313//58 334//58 +f 292//53 291//53 312//53 +f 294//53 293//53 314//53 +f 296//53 295//53 316//53 +f 290//53 289//53 310//53 +f 288//53 287//53 308//53 +f 286//53 285//53 306//53 +f 284//53 283//53 304//53 +f 282//53 281//53 302//53 +f 280//53 279//53 300//53 +f 278//53 277//53 298//53 +f 298//58 297//58 318//58 +f 300//58 299//58 320//58 +f 302//58 301//58 322//58 +f 304//58 303//58 324//58 +f 306//58 305//58 326//58 +f 308//58 307//58 328//58 +f 310//58 309//58 330//58 +f 312//58 311//58 332//58 +f 317//61 396//61 318//61 +f 319//61 394//61 320//61 +f 321//61 392//61 322//61 +f 323//61 390//61 324//61 +f 325//61 388//61 326//61 +f 327//61 386//61 328//61 +f 335//61 378//61 336//61 +f 333//61 380//61 334//61 +f 331//61 382//61 332//61 +f 329//61 384//61 330//61 diff --git a/assets/hbm/textures/gui/gui_assembler.png b/assets/hbm/textures/gui/gui_assembler.png new file mode 100644 index 0000000000000000000000000000000000000000..9d3cf92b330886fc133e7867a14eee9c2097441d GIT binary patch literal 2848 zcmai0d0f)j7QY}RnHuI)qoXxtS&f!ju9=BWK8sA97MIM?DRV=ml+Y{?-;~yrOG&xl z(ngyECOV3wU}lzPl$I#2Nx0#L8-yb7SIv8G-luu*{r)-U-gEBv+;h+OoX_uqr@O0` zhQ0;>Kx_A|o%;ZQK`IO&7eeB2^u1t6AYz<%A3#Fi8D!9T05k-$dYmEtA=7U%!{0Vc;KWp%<)v}oD$Pw~ zdz$3F+0BELCR&|Bw5N;NL%6>TbaNA!varCjB5Bq>%;5C26-_n2m0849HK2N&MIk5W z`+vx zgojSq=m0vE1AGk}TK0mV6H`7mu=H98imvv24e+tqllTddx*C10`j%{NF4w>M{qbEm z9L}Y_ZA{iCrW_cOQxt4x(#jvnrrx5-WsY2X6fdbWHB%O75s;K8E>i#~Q#iRz(_cD93jUD4 zk~|Gxg#fHj8+q_i{t)|8wpx*9c_!FE$5r#MaQdw@7d+W(y5Q9sVC;#%k43d*koD*M z5xkw2^6c`(>Bq(g47HQjl-}CAt>wL2GM8~<5tfkAA@ zs>R#Gzw8C)e2ECMYJ=?IgP*MTZnmbP`#wFdsqV|#J0J^Zo@_=dplU2(eOq>*vE&UsV#b@Q@P z#oppCs1+s3KXy^;$0Ic_UvmOQNO+0%5;dnl0;0aCq@bbyy%&el^zqC*ky$eHY%z`S zc%wxXYpdppI*|p9(j<{!F;yy?i-w8co5uiD79jHw0AUQiH-~}5MF8mr(1CCO*ZpF8 zg5b^0o{mpQSmNi1ZwmsKA|v)&)eEO@?td_Bhqi7q%a9e^Jl@ai12_@W+@K~?W<}P zzg(&Y8>D%WnTClN%GNuN@F&^S1SZz4i{z0C#oIKDL?lK=X$Nw1KRa5n&CUZGPGouC$UIaj@0{f>D-D05yDFV54Fd2@`s; zQK17nqxj_k^X>VOW7HJ>LC!q3BmQ<+h6B0psqi)C@qOc-a6v*!K3GvW4AUI6XD0{u zl^sy|#KUiwRD*#l?XA(@;YJiUJkEo1mw=-Z{hHWH+@@)cBBSYV{UF+EtZhkSFaJ>i z@0)4t++ljLx_Li5=MjI>Lz<0w8-SJSNUp2DelH{{>}GVcZjw?8tYNQj%}mbGBm(*1 z8W4Z!RA|U6+EY8|^ppibn@s0l84}3#irWkm$r9@_BToj_FLtj(;m;h>kw-?J zX%Yu?%CF_$8ZbsxBn%!~QyNtu$SvGYwZdB3u=IJ`Huw!DoDo4^i zCbK@Qg#q|)PrKxWYeG=HC}8w1Dxy>pLUn^X|A`5IMG}?~3Ss>%pye-}EYUN~SpDC5 z^wsHKJ=AtMI)->3w>4;LZ>L66Vq)#8mW6He=IRgsX+l$O<#HON8$RMSVSi1~uYmu} z-GwqWTLbMuv3MP4sdz*3F(Hles(;dsMj;8~s#DSRzRq?dhKZ?lM=={|0)c=+a!h7t z7$#C!^5|itrQ!c?j;~@95c^*BHvF>fi+p7C8b6G@om-oE)b;vcmfHVpw6CzBJXl8Q z(aQt0oAo+$kk_84qQ&3B|Jj?ZJ!`M~CthWpjTUm?`%^!u@@O}Ak2=)9TKBII|LE%f zFui2(>V41Hxz#avbO@-y0`bR1eXj126>O=xO(AePN6&1_GdPUwYf@_^Dix(e>WO|? z!1NXo@DJ`-(BUpJ3yj^CHySnN;o-577GJgmD{%ZE5is37m*b|^_B1y)yZ&k-t@3-v zSoQlr9|vSUdlwPp&)iERD2vwJQtOdQr6QTX*29m7CM#)gA*WD0Fi5NWNlPM?p19I} zp;VH*sUi$HE@5&>ib;`3$9N9r+2&ZK_aJq01zpcRi?qqtODj_b;_LEvu zQ`3VL)IW9^QPh#1^)ZDihIxG}h>MGphlXYfa#Y+gB2C}BQGxrI3nw4c(*?x!r$?T7 zvF3Nc$yR!$sCx~~&HG!<`i*K-L04biVF=0w!XxTL(!1?p(70s}$qe9yF=MEnmZ%ex zvXQ9M-B|1c)r3q7=97`Ol1DM=&+)Fkd-tw~cXyQlL%P#69qT~(P|w#t7P*LU(V|ek z`A(?kIth-sdmx^9l}xXW=w9qOduo2;P^>s)Bv^SQUC5uzqz8yX76-FGTbiKB6X8;z%OCiyJmp4c33j`Gj!TGg@ZmyD<~zM5D=bx^uRg210Oy=XW!9go`25RXT}7tIovmHvPxK4J3nMo zQx88F+n~eF++)C2C6REMq1dr%m+IkPUj_DRuXy} getRecipeFromTempate(ItemStack stack) { + + if(stack == null || !(stack.getItem() instanceof ItemAssemblyTemplate)) + return null; + + List list = new ArrayList(); + + switch(ItemAssemblyTemplate.EnumAssemblyTemplate.getEnum(stack.getItemDamage())) { + case TEST: + list.add(new ItemStack(Items.iron_ingot, 4)); + list.add(new ItemStack(Items.gold_ingot, 2)); + list.add(new ItemStack(Items.coal, 8)); + break; + } + + if(list.isEmpty()) + return null; + else + return list; + } + + public static ItemStack getOutputFromTempate(ItemStack stack) { + + if(stack == null || !(stack.getItem() instanceof ItemAssemblyTemplate)) + return null; + + ItemStack output = null; + + switch(ItemAssemblyTemplate.EnumAssemblyTemplate.getEnum(stack.getItemDamage())) { + case TEST: + output = new ItemStack(ModItems.rotor_steel, 2); + break; + } + + return output; + } } diff --git a/com/hbm/inventory/container/ContainerMachineAssembler.java b/com/hbm/inventory/container/ContainerMachineAssembler.java new file mode 100644 index 000000000..68a481521 --- /dev/null +++ b/com/hbm/inventory/container/ContainerMachineAssembler.java @@ -0,0 +1,148 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotMachineOutput; +import com.hbm.tileentity.TileEntityMachineAssembler; +import com.hbm.tileentity.TileEntityMachineMiningDrill; + +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 ContainerMachineAssembler extends Container { + +private TileEntityMachineAssembler nukeBoy; + + private int power; + private int progress; + private int maxProgress; + + public ContainerMachineAssembler(InventoryPlayer invPlayer, TileEntityMachineAssembler tedf) { + + nukeBoy = tedf; + + //Battery + this.addSlotToContainer(new Slot(tedf, 0, 80, 18)); + //Upgrades + this.addSlotToContainer(new Slot(tedf, 1, 152, 18)); + this.addSlotToContainer(new Slot(tedf, 2, 152, 36)); + this.addSlotToContainer(new Slot(tedf, 3, 152, 54)); + //Schematic + this.addSlotToContainer(new Slot(tedf, 4, 80, 54)); + //Output + this.addSlotToContainer(new SlotMachineOutput(invPlayer.player, tedf, 5, 134, 90)); + //Input + this.addSlotToContainer(new Slot(tedf, 6, 8, 18)); + this.addSlotToContainer(new Slot(tedf, 7, 26, 18)); + this.addSlotToContainer(new Slot(tedf, 8, 8, 36)); + this.addSlotToContainer(new Slot(tedf, 9, 26, 36)); + this.addSlotToContainer(new Slot(tedf, 10, 8, 54)); + this.addSlotToContainer(new Slot(tedf, 11, 26, 54)); + this.addSlotToContainer(new Slot(tedf, 12, 8, 72)); + this.addSlotToContainer(new Slot(tedf, 13, 26, 72)); + this.addSlotToContainer(new Slot(tedf, 14, 8, 90)); + this.addSlotToContainer(new Slot(tedf, 15, 26, 90)); + this.addSlotToContainer(new Slot(tedf, 16, 8, 108)); + this.addSlotToContainer(new Slot(tedf, 17, 26, 108)); + + 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 + 56)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); + } + } + + @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 <= 12) { + if (!this.mergeItemStack(var5, 13, this.inventorySlots.size(), true)) + { + return null; + } + } + else if (!this.mergeItemStack(var5, 0, 13, false)) + { + return null; + } + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return nukeBoy.isUseableByPlayer(player); + } + + @Override + public void detectAndSendChanges() { + super.detectAndSendChanges(); + + for(int i = 0; i < this.crafters.size(); i++) + { + ICrafting par1 = (ICrafting)this.crafters.get(i); + + if(this.power != this.nukeBoy.power) + { + par1.sendProgressBarUpdate(this, 0, this.nukeBoy.power); + } + + if(this.progress != this.nukeBoy.progress) + { + par1.sendProgressBarUpdate(this, 1, this.nukeBoy.progress); + } + + if(this.maxProgress != this.nukeBoy.maxProgress) + { + par1.sendProgressBarUpdate(this, 2, this.nukeBoy.maxProgress); + } + } + + this.power = this.nukeBoy.power; + this.progress= this.nukeBoy.progress; + this.maxProgress= this.nukeBoy.maxProgress; + } + + @Override + public void updateProgressBar(int i, int j) { + if(i == 0) + { + nukeBoy.power = j; + } + if(i == 1) + { + nukeBoy.progress = j; + } + if(i == 2) + { + nukeBoy.maxProgress = j; + } + } +} diff --git a/com/hbm/inventory/gui/GUIMachineAssembler.java b/com/hbm/inventory/gui/GUIMachineAssembler.java new file mode 100644 index 000000000..032a478e4 --- /dev/null +++ b/com/hbm/inventory/gui/GUIMachineAssembler.java @@ -0,0 +1,50 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineAssembler; +import com.hbm.inventory.container.ContainerMachineOilWell; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.TileEntityMachineAssembler; +import com.hbm.tileentity.TileEntityMachineOilWell; + +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 GUIMachineAssembler extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_assembler.png"); + private TileEntityMachineAssembler assembler; + + public GUIMachineAssembler(InventoryPlayer invPlayer, TileEntityMachineAssembler tedf) { + super(new ContainerMachineAssembler(invPlayer, tedf)); + assembler = tedf; + + this.xSize = 176; + this.ySize = 222; + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + String name = this.assembler.hasCustomInventoryName() ? this.assembler.getInventoryName() : I18n.format(this.assembler.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); + + int i = assembler.getPowerScaled(52); + drawTexturedModalRect(guiLeft + 116, guiTop + 70 - i, 176, 52 - i, 16, i); + + int j = assembler.getProgressScaled(83); + drawTexturedModalRect(guiLeft + 45, guiTop + 82, 2, 222, j, 32); + } +} diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index fc765abd0..387a1ae5a 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -505,6 +505,8 @@ public class ModItems { public static Item designator_range; public static Item linker; public static Item oil_detector; + + public static Item assembly_template; public static Item missile_generic; public static Item missile_anti_ballistic; @@ -1659,6 +1661,8 @@ public class ModItems { chopper = new ItemChopper().setUnlocalizedName("chopper").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":chopper"); linker = new ItemTeleLink().setUnlocalizedName("linker").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":linker"); oil_detector = new ItemOilDetector().setUnlocalizedName("oil_detector").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":oil_detector"); + + assembly_template = new ItemAssemblyTemplate().setUnlocalizedName("assembly_template").setMaxStackSize(1).setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":assembly_template"); euphemium_helmet = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 0).setUnlocalizedName("astatine_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_helmet"); euphemium_plate = new ArmorEuphemium(MainRegistry.enumArmorMaterialEuphemium, 6, 1).setUnlocalizedName("astatine_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_plate"); @@ -2257,6 +2261,9 @@ public class ModItems { GameRegistry.registerItem(factory_core_titanium, factory_core_titanium.getUnlocalizedName()); GameRegistry.registerItem(factory_core_advanced, factory_core_advanced.getUnlocalizedName()); + //Machine Templates + GameRegistry.registerItem(assembly_template, assembly_template.getUnlocalizedName()); + //Machine Upgrades GameRegistry.registerItem(upgrade_template, upgrade_template.getUnlocalizedName()); GameRegistry.registerItem(upgrade_speed_1, upgrade_speed_1.getUnlocalizedName()); diff --git a/com/hbm/items/tool/ItemAssemblyTemplate.java b/com/hbm/items/tool/ItemAssemblyTemplate.java new file mode 100644 index 000000000..ce443315c --- /dev/null +++ b/com/hbm/items/tool/ItemAssemblyTemplate.java @@ -0,0 +1,118 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.inventory.MachineRecipes; +import com.hbm.items.ModItems; + +import cpw.mods.fml.common.eventhandler.Event.Result; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockColored; +import net.minecraft.block.BlockLog; +import net.minecraft.block.IGrowable; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.resources.I18n; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.passive.EntitySheep; +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.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.FakePlayerFactory; +import net.minecraftforge.event.entity.player.BonemealEvent; + +public class ItemAssemblyTemplate extends Item { + + public enum EnumAssemblyTemplate { + + TEST(0); + + private final int value; + private EnumAssemblyTemplate(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + public static EnumAssemblyTemplate getEnum(int i) { + return EnumAssemblyTemplate.values()[i]; + } + + public String getName() { + return this.toString(); + } + } + + public ItemAssemblyTemplate() + { + this.setHasSubtypes(true); + this.setMaxDamage(0); + } + + public String getUnlocalizedName(ItemStack stack) + { + int i = stack.getItemDamage(); + return super.getUnlocalizedName() + "." + EnumAssemblyTemplate.getEnum(i).getName(); + } + + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tabs, List list) + { + for (int i = 0; i < EnumAssemblyTemplate.values().length; ++i) + { + list.add(new ItemStack(item, 1, i)); + } + } + + public static int getProcessTime(ItemStack stack) { + + if(!(stack.getItem() instanceof ItemAssemblyTemplate)) + return 100; + + int i = stack.getItemDamage(); + EnumAssemblyTemplate enum1 = EnumAssemblyTemplate.getEnum(i); + + switch (enum1) { + case TEST: + return 200; + default: + return 100; + } + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) + { + + if(!(stack.getItem() instanceof ItemAssemblyTemplate)) + return; + + List stacks = MachineRecipes.getRecipeFromTempate(stack); + ItemStack out = MachineRecipes.getOutputFromTempate(stack); + + try { + list.add("Output:"); + list.add(out.stackSize + "x " + out.getDisplayName()); + list.add("Inputs:"); + + for(int i = 0; i < stacks.size(); i++) { + if(stacks.get(i) != null) + list.add(stacks.get(i).stackSize + "x " + stacks.get(i).getDisplayName()); + } + } catch(Exception e) { + list.add("###INVALID###"); + } + } + +} diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index deed6d3c2..786be5a7e 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -164,6 +164,7 @@ import com.hbm.render.item.ItemRenderTestContainer; import com.hbm.render.item.ItemRenderUboinik; import com.hbm.render.item.ItemRenderXVL1456; import com.hbm.render.item.ItemRenderZOMG; +import com.hbm.render.tileentity.RenderAssembler; import com.hbm.render.tileentity.RenderBombMulti; import com.hbm.render.tileentity.RenderCable; import com.hbm.render.tileentity.RenderCentrifuge; @@ -219,6 +220,7 @@ import com.hbm.tileentity.TileEntityMachineIGenerator; import com.hbm.tileentity.TileEntityMachineMiningDrill; import com.hbm.tileentity.TileEntityMachineOilWell; import com.hbm.tileentity.TileEntityLaunchPad; +import com.hbm.tileentity.TileEntityMachineAssembler; import com.hbm.tileentity.TileEntityMachineCentrifuge; import com.hbm.tileentity.TileEntityMachineCyclotron; import com.hbm.tileentity.TileEntityMachineGasFlare; @@ -279,6 +281,7 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningDrill.class, new RenderMiningDrill()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler()); //RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index dcf5a0360..61fa78413 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -142,6 +142,7 @@ import com.hbm.tileentity.TileEntityMachineIGenerator; import com.hbm.tileentity.TileEntityMachineMiningDrill; import com.hbm.tileentity.TileEntityMachineOilWell; import com.hbm.tileentity.TileEntityLaunchPad; +import com.hbm.tileentity.TileEntityMachineAssembler; import com.hbm.tileentity.TileEntityMachineBattery; import com.hbm.tileentity.TileEntityMachineCMBFactory; import com.hbm.tileentity.TileEntityMachineCentrifuge; @@ -455,6 +456,7 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityPylonRedWire.class, "tileentity_pylon_redwire"); GameRegistry.registerTileEntity(TileEntityStructureMarker.class, "tileentity_structure_marker"); GameRegistry.registerTileEntity(TileEntityMachineMiningDrill.class, "tileentity_mining_drill"); + GameRegistry.registerTileEntity(TileEntityMachineAssembler.class, "tileentity_assembly_machine"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); diff --git a/com/hbm/render/tileentity/RenderAssembler.java b/com/hbm/render/tileentity/RenderAssembler.java new file mode 100644 index 000000000..7ff182ebd --- /dev/null +++ b/com/hbm/render/tileentity/RenderAssembler.java @@ -0,0 +1,58 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.TileEntityMachineIGenerator; +import com.hbm.tileentity.TileEntityMachineMiningDrill; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.AdvancedModelLoader; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderAssembler extends TileEntitySpecialRenderer { + + private static final ResourceLocation body = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/assembler.obj"); + + private IModelCustom bodyModel; + private ResourceLocation bodyTexture; + + public RenderAssembler() + { + bodyModel = AdvancedModelLoader.loadModel(body); + bodyTexture = new ResourceLocation(RefStrings.MODID, "textures/models/TheGadget3_.png"); + } + + @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.glRotatef(180, 0F, 1F, 0F); + switch(tileEntity.getBlockMetadata()) + { + case 2: + GL11.glRotatef(180, 0F, 1F, 0F); + GL11.glTranslated(0.5D, 0.0D, -0.5D); break; + case 4: + GL11.glRotatef(270, 0F, 1F, 0F); + GL11.glTranslated(0.5D, 0.0D, -0.5D); break; + case 3: + GL11.glRotatef(0, 0F, 1F, 0F); + GL11.glTranslated(0.5D, 0.0D, -0.5D); break; + case 5: + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glTranslated(0.5D, 0.0D, -0.5D); break; + } + + bindTexture(bodyTexture); + + bodyModel.renderAll(); + + GL11.glPopMatrix(); + } +} diff --git a/com/hbm/tileentity/TileEntityMachineAssembler.java b/com/hbm/tileentity/TileEntityMachineAssembler.java new file mode 100644 index 000000000..cbd414202 --- /dev/null +++ b/com/hbm/tileentity/TileEntityMachineAssembler.java @@ -0,0 +1,457 @@ +package com.hbm.tileentity; + +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IConsumer; +import com.hbm.inventory.MachineRecipes; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBattery; +import com.hbm.items.tool.ItemAssemblyTemplate; +import com.hbm.lib.Library; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEDrillPacket; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityChest; +import net.minecraft.tileentity.TileEntityHopper; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.oredict.OreDictionary; + +public class TileEntityMachineAssembler extends TileEntity implements ISidedInventory, IConsumer { + + private ItemStack slots[]; + + public int power; + public static final int maxPower = 100000; + public int progress; + public int maxProgress = 100; + int age = 0; + + Random rand = new Random(); + + private String customName; + + public TileEntityMachineAssembler() { + slots = new ItemStack[18]; + } + + @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.assembler"; + } + + @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; + } + } + + //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) { + if(i == 0) + if(itemStack.getItem() instanceof ItemBattery) + return true; + + if(i == 1) + return true; + + return false; + } + + @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); + + this.power = nbt.getInteger("powerTime"); + 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); + nbt.setInteger("powerTime", power); + 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); + } + + @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 false; + } + + public int getPowerScaled(int i) { + return (power * i) / maxPower; + } + + public int getProgressScaled(int i) { + return (progress * i) / maxProgress; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + power = Library.chargeTEFromItems(slots, 0, power, maxPower); + + if(MachineRecipes.getOutputFromTempate(slots[4]) != null && MachineRecipes.getRecipeFromTempate(slots[4]) != null) { + this.maxProgress = ItemAssemblyTemplate.getProcessTime(slots[4]); + + if(power >= 100 && removeItems(MachineRecipes.getRecipeFromTempate(slots[4]), cloneItemStackProper(slots))) { + + if(slots[5] == null || (slots[5] != null && slots[5].getItem() == MachineRecipes.getOutputFromTempate(slots[4]).copy().getItem()) && slots[5].stackSize + MachineRecipes.getOutputFromTempate(slots[4]).copy().stackSize <= slots[5].getMaxStackSize()) { + progress++; + + if(progress >= maxProgress) { + progress = 0; + if(slots[5] == null) { + slots[5] = MachineRecipes.getOutputFromTempate(slots[4]).copy(); + } else { + slots[5].stackSize += MachineRecipes.getOutputFromTempate(slots[4]).copy().stackSize; + } + + removeItems(MachineRecipes.getRecipeFromTempate(slots[4]), slots); + } + + power -= 100; + } + } + } + + } + + } + + //I can't believe that worked. + public ItemStack[] cloneItemStackProper(ItemStack[] array) { + ItemStack[] stack = new ItemStack[array.length]; + + for(int i = 0; i < array.length; i++) + if(array[i] != null) + stack[i] = array[i].copy(); + else + stack[i] = null; + + return stack; + } + + public boolean tryFillContainer(IInventory inventory, int slot) { + + int size = inventory.getSizeInventory(); + + for(int i = 0; i < size; i++) { + if(inventory.getStackInSlot(i) != null) { + + if(slots[slot] == null) + return false; + + ItemStack sta1 = inventory.getStackInSlot(i).copy(); + ItemStack sta2 = slots[slot].copy(); + if(sta1 != null && sta2 != null) { + sta1.stackSize = 1; + sta2.stackSize = 1; + + if(ItemStack.areItemStacksEqual(sta1, sta2) && ItemStack.areItemStackTagsEqual(sta1, sta2) && inventory.getStackInSlot(i).stackSize < inventory.getStackInSlot(i).getMaxStackSize()) { + slots[slot].stackSize--; + + if(slots[slot].stackSize <= 0) + slots[slot] = null; + + ItemStack sta3 = inventory.getStackInSlot(i).copy(); + sta3.stackSize++; + inventory.setInventorySlotContents(i, sta3); + + return true; + } + } + } + } + for(int i = 0; i < size; i++) { + + if(slots[slot] == null) + return false; + + ItemStack sta2 = slots[slot].copy(); + if(inventory.getStackInSlot(i) == null && sta2 != null) { + sta2.stackSize = 1; + slots[slot].stackSize--; + + if(slots[slot].stackSize <= 0) + slots[slot] = null; + + inventory.setInventorySlotContents(i, sta2); + + return true; + } + } + + return false; + } + + public boolean hasSpace(ItemStack stack) { + + ItemStack st = stack.copy(); + + if(st == null) + return true; + + for(int i = 1; i < 10; i++) { + if(slots[i] == null) + return true; + } + + int size = st.stackSize; + st.stackSize = 1; + + ItemStack[] fakeArray = slots.clone(); + boolean flag = true; + for(int i = 0; i < stack.stackSize; i++) { + if(!canAddItemToArray(st, fakeArray)) + flag = false; + } + + return flag; + } + + public void addItemToInventory(ItemStack stack) { + + ItemStack st = stack.copy(); + + if(st == null) + return; + + int size = st.stackSize; + st.stackSize = 1; + + for(int i = 0; i < size; i++) + canAddItemToArray(st, this.slots); + + } + + public boolean canAddItemToArray(ItemStack stack, ItemStack[] array) { + + ItemStack st = stack.copy(); + + if(st == null) + return true; + + for(int i = 1; i < 10; i++) { + + if(array[i] != null) { + ItemStack sta = array[i].copy(); + + if(sta != null && sta.getItem() == st.getItem() && sta.stackSize < st.getMaxStackSize()) { + array[i].stackSize++; + return true; + } + } + } + + for(int i = 1; i < 10; i++) { + if(array[i] == null) { + array[i] = stack.copy(); + return true; + } + } + + return false; + } + + //boolean true: remove items, boolean false: simulation mode + public boolean removeItems(List stack, ItemStack[] array) { + + if(stack == null) + return false; + + for(int i = 0; i < stack.size(); i++) { + for(int j = 0; j < stack.get(i).stackSize; j++) { + ItemStack sta = stack.get(i).copy(); + sta.stackSize = 1; + + if(!canRemoveItemFromArray(sta, array)) + return false; + } + } + + return true; + + } + + public boolean canRemoveItemFromArray(ItemStack stack, ItemStack[] array) { + + ItemStack st = stack.copy(); + + if(st == null) + return true; + + for(int i = 6; i < 18; i++) { + + if(array[i] != null) { + ItemStack sta = array[i].copy(); + sta.stackSize = 1; + + if(sta != null && sta.isItemEqual(st) && array[i].stackSize > 0) { + array[i].stackSize--; + + if(array[i].stackSize <= 0) + array[i] = null; + + return true; + } + } + } + + return false; + } + + @Override + public void setPower(int i) { + power = i; + + } + + @Override + public int getPower() { + return power; + + } + + @Override + public int getMaxPower() { + return maxPower; + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } +} diff --git a/com/hbm/tileentity/TileEntityMachineMiningDrill.java b/com/hbm/tileentity/TileEntityMachineMiningDrill.java index 282e8f9d7..f3ea27c3c 100644 --- a/com/hbm/tileentity/TileEntityMachineMiningDrill.java +++ b/com/hbm/tileentity/TileEntityMachineMiningDrill.java @@ -576,7 +576,9 @@ public class TileEntityMachineMiningDrill extends TileEntity implements ISidedIn if(!tryDrill(x - 1, y, z - 1)) if(!tryDrill(x, y, z - 1)) if(!tryDrill(x + 1, y, z - 1)) - return false; + + if(!tryDrill(x, y - 1, z)) + return false; return true; } @@ -607,7 +609,9 @@ public class TileEntityMachineMiningDrill extends TileEntity implements ISidedIn if(!tryDrill(x, y, z - 2)) if(!tryDrill(x + 1, y, z - 2)) if(!tryDrill(x + 2, y, z - 1)) - return false; + + if(!tryDrill(x, y - 1, z)) + return false; return true; } @@ -655,7 +659,9 @@ public class TileEntityMachineMiningDrill extends TileEntity implements ISidedIn if(!tryDrill(x + 1, y, z - 3)) if(!tryDrill(x + 2, y, z - 2)) if(!tryDrill(x + 3, y, z - 1)) - return false; + + if(!tryDrill(x, y - 1, z)) + return false; return true; } @@ -736,7 +742,9 @@ public class TileEntityMachineMiningDrill extends TileEntity implements ISidedIn if(!tryDrill(x + 3, y, z - 2)) if(!tryDrill(x + 4, y, z - 2)) if(!tryDrill(x + 4, y, z - 1)) - return false; + + if(!tryDrill(x, y - 1, z)) + return false; return true; }