From bd25b119081b56b91c37c65306e2ce534ee5f7db Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sun, 12 Jan 2020 18:40:21 +0000 Subject: [PATCH] Turbine rendering, thanks Spearkiller for the textures and model --- .../java/techreborn/TechRebornClient.java | 10 +- .../generator/basic/WindMillBlockEntity.java | 18 +++- ...yRenderer.java => CableCoverRenderer.java} | 4 +- ...enderNukePrimed.java => NukeRenderer.java} | 4 +- ...Renderer.java => StorageUnitRenderer.java} | 4 +- .../render/entitys/TurbineRenderer.java | 94 ++++++++++++++++++ .../block/machines/generators/wind_mill.json | 22 ++-- .../machines/generators/wind_mill_on.json | 22 ++-- .../machines/generators/wind_mill_bottom.png | Bin 772 -> 741 bytes .../machines/generators/wind_mill_front.png | Bin 0 -> 802 bytes .../generators/wind_mill_front_off.png | Bin 795 -> 0 bytes .../generators/wind_mill_front_on.png | Bin 1426 -> 0 bytes .../machines/generators/wind_mill_left.png | Bin 769 -> 748 bytes .../machines/generators/wind_mill_right.png | Bin 769 -> 758 bytes .../machines/generators/wind_mill_top.png | Bin 784 -> 749 bytes .../machines/generators/wind_mill_turbine.png | Bin 0 -> 859 bytes .../textures/item/part/basic_turbine.png | Bin 0 -> 386 bytes .../textures/item/tool/painting_tool.png | Bin 1385 -> 431 bytes .../techreborn/textures/item/tool/wrench.png | Bin 482 -> 411 bytes 19 files changed, 145 insertions(+), 33 deletions(-) rename src/main/java/techreborn/client/render/entitys/{CableCoverEntityRenderer.java => CableCoverRenderer.java} (90%) rename src/main/java/techreborn/client/render/entitys/{RenderNukePrimed.java => NukeRenderer.java} (95%) rename src/main/java/techreborn/client/render/entitys/{StorageUnitEntityRenderer.java => StorageUnitRenderer.java} (91%) create mode 100644 src/main/java/techreborn/client/render/entitys/TurbineRenderer.java create mode 100644 src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_front.png delete mode 100644 src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_front_off.png delete mode 100644 src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_front_on.png create mode 100644 src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_turbine.png create mode 100644 src/main/resources/assets/techreborn/textures/item/part/basic_turbine.png diff --git a/src/main/java/techreborn/TechRebornClient.java b/src/main/java/techreborn/TechRebornClient.java index b0a84c3f4..2a866e473 100644 --- a/src/main/java/techreborn/TechRebornClient.java +++ b/src/main/java/techreborn/TechRebornClient.java @@ -47,8 +47,9 @@ import reborncore.client.hud.StackInfoHUD; import reborncore.client.multiblock.MultiblockRenderer; import techreborn.client.render.DynamicBucketBakedModel; import techreborn.client.render.DynamicCellBakedModel; -import techreborn.client.render.entitys.CableCoverEntityRenderer; -import techreborn.client.render.entitys.StorageUnitEntityRenderer; +import techreborn.client.render.entitys.CableCoverRenderer; +import techreborn.client.render.entitys.StorageUnitRenderer; +import techreborn.client.render.entitys.TurbineRenderer; import techreborn.events.StackToolTipHandler; import techreborn.init.ModFluids; import techreborn.init.TRBlockEntities; @@ -156,8 +157,9 @@ public class TechRebornClient implements ClientModInitializer { BlockEntityRendererRegistry.INSTANCE.register(TRBlockEntities.DISTILLATION_TOWER, MultiblockRenderer::new); BlockEntityRendererRegistry.INSTANCE.register(TRBlockEntities.IMPLOSION_COMPRESSOR, MultiblockRenderer::new); BlockEntityRendererRegistry.INSTANCE.register(TRBlockEntities.GREENHOUSE_CONTROLLER, MultiblockRenderer::new); - BlockEntityRendererRegistry.INSTANCE.register(TRBlockEntities.STORAGE_UNIT, StorageUnitEntityRenderer::new); - BlockEntityRendererRegistry.INSTANCE.register(TRBlockEntities.CABLE, CableCoverEntityRenderer::new); + BlockEntityRendererRegistry.INSTANCE.register(TRBlockEntities.STORAGE_UNIT, StorageUnitRenderer::new); + BlockEntityRendererRegistry.INSTANCE.register(TRBlockEntities.CABLE, CableCoverRenderer::new); + BlockEntityRendererRegistry.INSTANCE.register(TRBlockEntities.WIND_MILL, TurbineRenderer::new); } diff --git a/src/main/java/techreborn/blockentity/generator/basic/WindMillBlockEntity.java b/src/main/java/techreborn/blockentity/generator/basic/WindMillBlockEntity.java index 37e808012..35a525de6 100644 --- a/src/main/java/techreborn/blockentity/generator/basic/WindMillBlockEntity.java +++ b/src/main/java/techreborn/blockentity/generator/basic/WindMillBlockEntity.java @@ -39,6 +39,9 @@ import techreborn.init.TRBlockEntities; public class WindMillBlockEntity extends PowerAcceptorBlockEntity implements IToolDrop { + public float bladeAngle; + public float spinSpeed; + public WindMillBlockEntity() { super(TRBlockEntities.WIND_MILL); } @@ -46,7 +49,20 @@ public class WindMillBlockEntity extends PowerAcceptorBlockEntity implements ITo @Override public void tick() { super.tick(); - if (pos.getY() > 64) { + + boolean generating = pos.getY() > 64; + + if(world.isClient) { + bladeAngle += spinSpeed; + + if (generating) { + spinSpeed = Math.min(0.2F, spinSpeed + 0.002f); + } else { + spinSpeed = Math.max(0.0f, spinSpeed - 0.005f); + } + } + + if (generating) { int actualPower = TechRebornConfig.windMillBaseEnergy; if (world.isThundering()) { actualPower *= TechRebornConfig.windMillThunderMultiplier; diff --git a/src/main/java/techreborn/client/render/entitys/CableCoverEntityRenderer.java b/src/main/java/techreborn/client/render/entitys/CableCoverRenderer.java similarity index 90% rename from src/main/java/techreborn/client/render/entitys/CableCoverEntityRenderer.java rename to src/main/java/techreborn/client/render/entitys/CableCoverRenderer.java index ff0ca9174..fda229139 100644 --- a/src/main/java/techreborn/client/render/entitys/CableCoverEntityRenderer.java +++ b/src/main/java/techreborn/client/render/entitys/CableCoverRenderer.java @@ -16,9 +16,9 @@ import techreborn.blocks.cable.CableBlock; import java.util.Random; -public class CableCoverEntityRenderer extends BlockEntityRenderer { +public class CableCoverRenderer extends BlockEntityRenderer { - public CableCoverEntityRenderer(BlockEntityRenderDispatcher dispatcher) { + public CableCoverRenderer(BlockEntityRenderDispatcher dispatcher) { super(dispatcher); } diff --git a/src/main/java/techreborn/client/render/entitys/RenderNukePrimed.java b/src/main/java/techreborn/client/render/entitys/NukeRenderer.java similarity index 95% rename from src/main/java/techreborn/client/render/entitys/RenderNukePrimed.java rename to src/main/java/techreborn/client/render/entitys/NukeRenderer.java index fb6f50c6a..091165e3b 100644 --- a/src/main/java/techreborn/client/render/entitys/RenderNukePrimed.java +++ b/src/main/java/techreborn/client/render/entitys/NukeRenderer.java @@ -41,9 +41,9 @@ import javax.annotation.Nullable; /** * Created by Mark on 13/03/2016. */ -public class RenderNukePrimed extends EntityRenderer { +public class NukeRenderer extends EntityRenderer { - public RenderNukePrimed(EntityRenderDispatcher renderManager) { + public NukeRenderer(EntityRenderDispatcher renderManager) { super(renderManager); this.shadowSize = 0.5F; } diff --git a/src/main/java/techreborn/client/render/entitys/StorageUnitEntityRenderer.java b/src/main/java/techreborn/client/render/entitys/StorageUnitRenderer.java similarity index 91% rename from src/main/java/techreborn/client/render/entitys/StorageUnitEntityRenderer.java rename to src/main/java/techreborn/client/render/entitys/StorageUnitRenderer.java index ca45d1fa8..922ec632f 100644 --- a/src/main/java/techreborn/client/render/entitys/StorageUnitEntityRenderer.java +++ b/src/main/java/techreborn/client/render/entitys/StorageUnitRenderer.java @@ -16,8 +16,8 @@ import techreborn.blockentity.storage.item.StorageUnitBaseBlockEntity; /** * Created by drcrazy on 07-Jan-20 for TechReborn-1.15. */ -public class StorageUnitEntityRenderer extends BlockEntityRenderer { - public StorageUnitEntityRenderer(BlockEntityRenderDispatcher dispatcher) { +public class StorageUnitRenderer extends BlockEntityRenderer { + public StorageUnitRenderer(BlockEntityRenderDispatcher dispatcher) { super(dispatcher); } diff --git a/src/main/java/techreborn/client/render/entitys/TurbineRenderer.java b/src/main/java/techreborn/client/render/entitys/TurbineRenderer.java new file mode 100644 index 000000000..52bd93fcd --- /dev/null +++ b/src/main/java/techreborn/client/render/entitys/TurbineRenderer.java @@ -0,0 +1,94 @@ +package techreborn.client.render.entitys; + +import net.minecraft.client.model.Model; +import net.minecraft.client.model.ModelPart; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.WorldRenderer; +import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher; +import net.minecraft.client.render.block.entity.BlockEntityRenderer; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.util.math.Vector3f; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.Direction; +import techreborn.blockentity.generator.basic.WindMillBlockEntity; + +public class TurbineRenderer extends BlockEntityRenderer { + private static final TurbineModel MODEL = new TurbineModel(); + public static final Identifier TEXTURE = new Identifier("techreborn:textures/block/machines/generators/wind_mill_turbine.png"); + + public TurbineRenderer(BlockEntityRenderDispatcher dispatcher) { + super(dispatcher); + } + + @Override + public void render(WindMillBlockEntity blockEntity, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, int overlay) { + Direction facing = blockEntity.getFacing(); + int renderLight = WorldRenderer.getLightmapCoordinates(blockEntity.getWorld(), blockEntity.getPos().offset(facing)); + + final VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(RenderLayer.getEntitySolid(TEXTURE)); + + matrixStack.push(); + matrixStack.translate(0.5, 0, 0.5); + matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(-facing.rotateYCounterclockwise().asRotation() + 90)); + matrixStack.translate(0, -1, -0.56); + + float spin = blockEntity.bladeAngle + tickDelta * blockEntity.spinSpeed; + MODEL.setSpin(spin); + MODEL.render(matrixStack, vertexConsumer, renderLight, overlay, 1F, 1F, 1F, 1F); + + matrixStack.pop(); + } + + private static class TurbineModel extends Model { + + private final ModelPart base; + + public TurbineModel() { + super(RenderLayer::getEntityCutoutNoCull); + textureWidth = 64; + textureHeight = 64; + + base = new ModelPart(this); + + base.setPivot(0.0F, 24.0F, 0.0F); + base.addCuboid(null, -2.0F, -2.0F, -1.0F, 4, 4, 2, 0.0F, 0, 0); + base.addCuboid(null, -1.0F, -1.0F, -2.0F, 2, 2, 1, 0.0F, 0, 6); + + ModelPart blade1 = new ModelPart(this); + blade1.setPivot(0.0F, 0.0F, 0.0F); + setRotation(blade1, -0.5236F, 0.0F, 0.0F); + blade1.addCuboid(null, -24.0F, -1.0F, -0.5F, 24, 2, 1, 0.0F, 0, 9); + + ModelPart blade2 = new ModelPart(this); + blade2.setPivot(0.0F, 0.0F, 0.0F); + setRotation(blade2, -0.5236F, 0.0F, 2.0944F); + blade2.addCuboid(null, -24.0F, -1.0F, -0.5F, 24, 2, 1, 0.0F, 0, 9); + + ModelPart blade3 = new ModelPart(this); + blade3.setPivot(0.0F, 0.0F, 0.0F); + setRotation(blade3, -0.5236F, 0.0F, -2.0944F); + blade3.addCuboid(null, -24.0F, -2.0F, -1.075F, 24, 2, 1, 0.0F, 0, 9); + + base.addChild(blade1); + base.addChild(blade2); + base.addChild(blade3); + } + + private void setRotation(ModelPart model, float x, float y, float z) { + model.pitch = x; + model.yaw = y; + model.roll = z; + } + + private void setSpin(float z) { + base.roll = z; + } + + @Override + public void render(MatrixStack matrixStack, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha) { + base.render(matrixStack, vertexConsumer, light, overlay); + } + } +} diff --git a/src/main/resources/assets/techreborn/models/block/machines/generators/wind_mill.json b/src/main/resources/assets/techreborn/models/block/machines/generators/wind_mill.json index e153e13f0..f0b463c48 100644 --- a/src/main/resources/assets/techreborn/models/block/machines/generators/wind_mill.json +++ b/src/main/resources/assets/techreborn/models/block/machines/generators/wind_mill.json @@ -1,11 +1,11 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "up": "techreborn:block/machines/generators/wind_mill_top", - "down": "techreborn:block/machines/generators/wind_mill_bottom", - "west": "techreborn:block/machines/generators/wind_mill_left", - "east": "techreborn:block/machines/generators/wind_mill_right", - "south": "techreborn:block/machines/generators/generator_bottom", - "front": "techreborn:block/machines/generators/wind_mill_front_off" - } -} +{ + "parent": "minecraft:block/orientable", + "textures": { + "up": "techreborn:block/machines/generators/wind_mill_top", + "down": "techreborn:block/machines/generators/wind_mill_bottom", + "west": "techreborn:block/machines/generators/wind_mill_left", + "east": "techreborn:block/machines/generators/wind_mill_right", + "south": "techreborn:block/machines/generators/generator_bottom", + "front": "techreborn:block/machines/generators/wind_mill_front" + } +} diff --git a/src/main/resources/assets/techreborn/models/block/machines/generators/wind_mill_on.json b/src/main/resources/assets/techreborn/models/block/machines/generators/wind_mill_on.json index 07c42bbc8..f0b463c48 100644 --- a/src/main/resources/assets/techreborn/models/block/machines/generators/wind_mill_on.json +++ b/src/main/resources/assets/techreborn/models/block/machines/generators/wind_mill_on.json @@ -1,11 +1,11 @@ -{ - "parent": "minecraft:block/orientable", - "textures": { - "up": "techreborn:block/machines/generators/wind_mill_top", - "down": "techreborn:block/machines/generators/wind_mill_bottom", - "west": "techreborn:block/machines/generators/wind_mill_left", - "east": "techreborn:block/machines/generators/wind_mill_right", - "south": "techreborn:block/machines/generators/generator_bottom", - "front": "techreborn:block/machines/generators/wind_mill_front_on" - } -} +{ + "parent": "minecraft:block/orientable", + "textures": { + "up": "techreborn:block/machines/generators/wind_mill_top", + "down": "techreborn:block/machines/generators/wind_mill_bottom", + "west": "techreborn:block/machines/generators/wind_mill_left", + "east": "techreborn:block/machines/generators/wind_mill_right", + "south": "techreborn:block/machines/generators/generator_bottom", + "front": "techreborn:block/machines/generators/wind_mill_front" + } +} diff --git a/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_bottom.png b/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_bottom.png index 6fc003b2551cfddc477f0fda10963a6e9a48029a..c6bd2b23ba837f59930b5fe6794470d8b9b1df20 100644 GIT binary patch delta 717 zcmV;;0y6!C2IU2iB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000XU z000XU0RWnu7ytkQdPzhezUDXd-CPdHyB^r=%Oo)%fm2PI~XXwJ1 zxX_r0E^y^H_z$pg!Oo?B;KmRaDohii5{F?1dS3mg^3;eiaeskS(y8jIy62vA?k(|n z^|dXF91sGgC{b|j`vFQ*A_yaxvOrlH&N;N(FA8|dL!bkmhY$~*uGspuIqm)gS1B=H3r>Ib|4o)+mlS zTV@L32?--D{4geKdIJw6gQbN9Y;EsA4VW#&tBU4)f#jVQBz50HKZa)X=#vv^GHfTNd}exp*y4g z(O`&nrvvG04OhyXGP>Oqtxg-Abb!O&5!!5;ZhFZ5F4{*aGRoXL=%CCBM9~C%CS?^A z4v1taVSlnRg?o(#%?yxb*|@BV{EM6cr0#lU{p|)?$5IR#i#O{V_WIHSse5cbi@BMz zM330c_BUuGb!CD6FdLihNe{a}_aWU+g?(S0p2B?fJPl)?vxN-<90TXRW8)II zFJh^yGt-!iBQo_NqaZ}U&oEQY3>hDg>w6dM#zu(2AsIOae*hg&?%oOa#M-;}*6DPI zy)+%u4YZ=;90ZLRP|!SI>G2&WLmj_PDJ6aZ#$ZzhLPh6w00000NkvXXu0mjfZ7)Rq delta 729 zcmV;~0w(?C1%w8WBo78+OGiWi=K$&e+t$PWnvp&ie*gz`Nliru;0hNEF(9eO7`p%f z0+C5XK~y-)O_EEBWK|G`zY`JX+;eYcJ+Mm5vJ!jXpk0VlN3OypD2TWam*CJ12!f!X zgH{l#>FPrJp;#7XWo6#;bdWtTW`DpJ{P9P)Pd@vy*OI|GTB($h31OhN$`D6dE!5g* zHRHoTe=P+yW$*(-jM(me!{ZMgljeempr-Whm==+oGp#ke86kLL9NFD(@xiFI@$C5x zVj(ckGk15lm^WH)s6fdD6UCb$9Q1ax!HMJ9^>fB?B90N8=NVBuOyBR=@AoXHi9YYJ zFd$Cotx!_NhCmDhLkK`a)i42K2!P}G_?TJ}f2tlaL7gJvP*Hl#^zH~TkaNO`;5wL7 zC6&U%c1v%WoGXL(s2WZjwN;`Iq?|D|>_JE=F^wZ?f(7p}H5Svv(Q2;ZToPl%J2`|n4g=RWH@y1uH8G9= zs1urWLR>)0fMNGdZ*-q51!T<|7^Al-ji}dMS1$i3na#oN0%%9y}RY|{EYL{ z6P$CDlu=cD@P|xPdFyz|a*E`6=4dez%wwfwa!Ne9ygiki?`BZhzjf*Jn-I`0tc37uCP00000 LNkvXXu0mjfrafb; diff --git a/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_front.png b/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_front.png new file mode 100644 index 0000000000000000000000000000000000000000..ee1738cca9afc7ecbf67638fe148646e9a9e84ba GIT binary patch literal 802 zcmV+-1Ks?IP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf6951U69E94oEQKA0=G#-K~y+TRa3uf z6hRdJX6APHE_cyO?xINyf+CzKVj2}guo46t{{TB1I~xlNEo`mQNE$&5DQqMJA%>uV zU_ye?CYbo6QIs5sF*(D9-0j}Z?D*bnPVm7pvpe&B?|a{SD`pm!tuY413Pf=WQc9Ru zLnj7_u}G`|hfM&_^APKnTbs=$l*~X(%`Mu&GZnO2DOd>M036m@D5c!qC83A!)a!Kw zK^99ZtNbn6MZw_q8a6@)j^mir8GQS>4&{5uC=X(CcHW+^oI)l;awt2K zZEkL2=Is)Kd={E2Fky&mS1zMeDjg&c&|2f&$4`(6y>J#jXf_&n`eFiamOr3W?n1H9 ziS9xkhYsiQYGDzhW8+l6&$^J$cOam>WNB@wzqhwh$Q97j)s0*bkV)i+OzS_|a|E5m zBDS`E!FMKxWH22^QRL(^!PMM5I&wZap5O<0^60@mj6A%LdZS6_3ChK8S6W1b+zCPC zQj;mrF^B>ov9d% zL%#1jA}JI??t;;dG{`8YT9SRVp&k<>v$yNMdFQSpVepMxw;@#qN~9_^h5eO@;{6YBlHfiDLsa5C;3~4*?THD&q+I`wd(jx`h7zen-BvvPK?|bULTW3aHOz z?CtL2dv%=@$$x$%r0CDy9(HOw=qZ=~O)IZrY;xLOI9q{7Q>7E_>e?le$=9>+{4B|q zL|}1!cnH0{z0MQ9!-vlRXa02+U0@Op1~GuYOO=j$ gn}GK`hEWvZFX`xb;=MB2tpET307*qoM6N<$g4_~c761SM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_front_off.png b/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_front_off.png deleted file mode 100644 index 0cea3a91a7306b303d004d58f24650d6f82500d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 795 zcmV+$1LXXPP)e{0008INkl4cC=te_o3`i0L5sIb@9SyEpP@(N2ZxKRi!CN}qCjZQglN4%1O(yTXd+u?O{rByDIQjT5W@f=SO^Aq7YaKflCkz1Mz!;O- z#28bn)f8!Mtv&KlHc67jg@uD*2mk;eB1$O$U}k0}qNo4-ee~n@>8Jl{B1)2Ediu}Q z?2_X1FwBa`&J)*S(lj^sOrsW^S$?ssm7zFI0ibbTW4T-&xqh?wd=3E8IAvz->C*iC zFTedhQ7FuoO50nt?YKq`P(++_l}hE(l`A7RZY?b?{Qvq@b$z{5nxA-32m`-3Gjq5l zXlrZB7*8`Z05rF>bazPtURho3%H>A$`N0cc`+iWXZ94&q<5+7g zBL0WL>D-BXKmPRH?OQ9=%4&73r>AE$pC24Jf4~o7W@8KzXqz(FR3n1Mz4d#W8k=r> zfA_*yXUZFI?%cWiY3FAj?5QJ^-Go+znYD8+wyY5tBux?#_utFPler=QY`uFcA{x<< z0sA|&8Mm_ZQq+s)0&+RL-Oz0p_{jYVgBdmk32HePQeRxBWBqm&{=8UQTI^2*Z0 zgF;s>_s!+Y9UaGyebNy{QD1-mxB1bfl|@9f)@rS_wU!-J$}h$zr^3J=&F3$k@7q&f zPl(6bTccm^pZem|$n~2;1O0vwAfh&&UMQ9BKl-CMJ6oKY8R$C~X0rfb6Kfh8x=(hF zPfh^<5h0>dN{fTmLx(J?FFQM}*lf1dCN{G>gBb*XFx%RVI3ZG9s~+%uMAQJlNgC{L zs;jGW&MBol&)Xr0hyW0V+0%eQbF=4pHc9b^pC_5wu_z*C)J{i4j)fG82oddA1SfGE ZzXzTbc~#fxK>Gjy002ovPDHLkV1oFDVVVE{ diff --git a/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_front_on.png b/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_front_on.png deleted file mode 100644 index 453616c421cb0181c5da93b06ba93bc7b6a00fb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1426 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 IM6N<$g0t0A%>V!Z diff --git a/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_right.png b/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_right.png index 05cb8e3ce904768015c595139cbf91f829547b4e..4c21d23fe331ed35ffcce7bc528d947f3fd40c69 100644 GIT binary patch delta 734 zcmV<40wMi@2KEJzB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000XU z000XU0RWnu7ytkQi%CR5R5(vflRIw|F%*T5?b&(kBSbtDB9WI!lp>%ADnw6DLBmg= zqN6~fK!T1xM1|5og#;-OkcdD)Bq&itb~7_O_IQSKJpy5A_J4ZTzQ^}FzM~#Jf6;pH zk!C53i6BF@KsFelDDp5jkw%JC?&h1-F%;0K|qtgj=adwbab{u75s z$4FS6vle+#!hbg&Ns{2)%m~&xXip_)Ym6sj>~6p1+~NJ}EtUwpd$WbC--m7*oN(Qi zCE{L;>2wOguIn1wL=m##KqmNgaEOYF5&<8goI0(WAawuUUG&o!5py)rLUgvGV#&lZ z@C#BHx)(x(7K)Du)x?k_d7N`ZuoN=Az+$xNN@ML3?SC{6u~D6=B2-eu7!wkEaSU72 z12NE%#j+9^f+RyrCWm;@G;I)ydfmxcmIaZB*sS0$Pgk-a$?$D=rQ!t}B?#60QHnrq zOEY^YS)ms89$$21!gfKD;p{X-@uFse2+65}Q&m+Ep&Iv-y~w#aY$5`YWGLMsh!@&$ zPNA6GQhxzg!|5{9!mik_h6rhzhU=7A=6Ux{_=eXQOy$WXd!b=pI9Kz=*ayNc&Y!VS z=H@Sl>y)TinMCozd%8`bm#?;PaD2l1kRnttR13Q(8vb!KcX$e;r7I5+W1-Och#t%uV zk`_KAp7+EOQy)Bj+LmV%L^Md;6$=%c<=-{^_pa#Awapu>z#>ah%+8GP2bg7VP?^ea Qx&QzG07*qoM6N<$g7dylKL7v# delta 726 zcmV;{0xA9W1%U>TBo78+OGiWi=K$&e+t$PWnvp&ie*gz`Nliru;0hNECmRG*L`VPt z0**;UK~y-)HIU10TtyT`SDjN;eQ&oD+dNDRc^JhgCAtrfr;0(t9`CKCz1$aHe$~y4VH{BPxDM)txEN{O2u@ISggDYMo;-O% z^nunIf6;qPEQ|jb#=vuXJ>486V{B^*EhWT&f9drTQy3qJbL($ zQVK`MN8H`svRaN*t1OpGhGF3PcFq0eKn#($e-7^hFz1Y@_lyTC%#1lF@|>x)0S*Ri!mU(mWADz*?i` zgmt60PBEi9uxdzi0N@-rN17A=M^u#EcE)POIib~tSw+=TbEVdT^~Nv^|A{k16*HrE zket)rd^6tcc9<1XDb$h>2Tl}#_f8)Wf5sJ;*Ef_>Fl&Sm5bpz44Hab=2GmDFP^>oQ zoT)W4&l8WHf5O+_evkEzS4C7PB_rbZ!meIjQc`BK*)UC+f8K1ly}4n%+2Tcbc79IH z6TLfr`t>(9>op++JiQYap2MRQms&MxBF+K#G?7u(%_!%W;F zs}EfKa)FPLloA3sRbmJ@^{7__K!g|~zyI-)Kd)}6wV>+x7sQ!s9gTB0fdBvi07*qo IM6N<$f|x{26951J diff --git a/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_top.png b/src/main/resources/assets/techreborn/textures/block/machines/generators/wind_mill_top.png index 86255acb75b0b6eefc6c1cfc340a903cccd3f5c7..c8f45b4b40b06dfbb97ed0a4ea50de5f3e26c7bb 100644 GIT binary patch delta 725 zcmV;`0xJEG2JHoqB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000XU z000XU0RWnu7ytkQf=NU{R5(wKQ$cGJK@|RGcXrbxn@ZHE^R7`P$EdNtj%#Pm`8>V zLE=~;;&xP=V1GD@(A(?Npe<0beFh%`Is|l?B+XK6^>)$gA0Qkl0{RdSUc55pN(G~F zgoIgd-nfpGK@rc=leSJ~HV=xJWoXRnt zix0;`qDF9NELY2jqcOI(ci<#(gop>%mzbGqz^C%fT7Q6gy^eY?iDpp6WVMDyP{z4N zllA}}sh3J6Boy1p(j1j)1%LVjgw$hyI7G<3A0DEA7-Db~B8(Jv_x3Ot>|<~cVz;+r zMK#n)8q(w-ARa3$zgA=8F?%>gv(KGcTU>a`n3&l>)s>NX)vv1%x9>kOXQ}&iMjrkGuFsp&xx_6p00000NkvXX Hu0mjfx{ORn delta 741 zcmVf;e*~IuZOo;=upmPjK3y zjui?m6bfx1p>3MProB05pR@P7w}YU#W^1q>Sc~O;{p~?BD=ZcZa?W&JAm@y80N}mg zy+cJ1fA!Q_=|jK)oe0`m<*P4Fn5V>gv!Pl=#3LdAm>KS08qiv!)=CJGKOaBAt9EoD zaC-g%%Y~dXW|cH1T5JD>0BWrOyuQ3*o+rHb_>@LY&tJ0MKj8fGipw`QI0s$mn9@XR zjRvGNas773Zb)=7^6qwIE*X9F_z@2u{za>Xe})A=e*Z1!XJ5x7IY6A_5YY;FZh$zlGtQvh6cyoP)ilXYd9R`k$f40oih&D5VD$CW1^?Hq!8IcaJ9&vX!7B4i* zwB`tXAeX{0j##O8Bc^#~yd5YdlTzZ|a!G3y4H54=trp6h(HQ8*$ZmJbc3WuIG3nyr)qC)H9N%xed2{u2Z>4=n zE*)K^QmlbZ35pVLwrsw5?UcRZ+^JK0rCRCy>kJbfLSSg*!0VrRK@QyZg%j zoHZzKJ;^$$D1G0Cn)aLb&z`G!X5OFdrI}$nvwq>JO)jBY9Ond0m1mSsb(*zoN9|)N z<3>~A?R}lj>}QL=oJibqEQ;f>0He6bL50I7+^+iPJp9}B>r<|%ar$yWugtW)dpC3# z2di%g{(JW3>8+<&_FaA3WY}im`LQ}#*#3V`LTxek;a9KKkk3457o;Iq9|J}GX{`HMFYEwQbwq3pM`%L7=f0iAkwbM4$KVN#!-t?8yzZWm} z?5cXnwC>CtcV(`^k9SPO?AKk%p0c~+b?I7j%e^;WPIS8+%yAF~wpSfT5B|H4L2 z-v@W@S~qjwjXOGTd;H4BlaKo>H@@|?dyxc>j&{-Ki8I)ARC#Bd;$Y2%Pwlo=<{ zvG!u1aIlE#CJV>(m$H8I=QJ&Fd>+~OETcQ&SO6=p1y2Uks@(S_^NW7XnH9;g8KOH!r#{Xjq1I8_WhM7EM=#eY%OB@R^(mxQ53Lbyzo)A zG=Trr)7jf47OyT{e%aCM{bd_dW&sw%^FdkO0g(!mE`BR_lG2!?u$;vuAjj>iqrz9o zb>*pDQ!6U+^XeI1ZCm|5wD~{Nx>L*>-mS4=czupej1>*_+vMhaOWS+d2bdukJYD@< J);T3K0RZ9+jI#g$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/techreborn/textures/item/part/basic_turbine.png b/src/main/resources/assets/techreborn/textures/item/part/basic_turbine.png new file mode 100644 index 0000000000000000000000000000000000000000..81a584d2ea5482760c5bf922d1268a86751c3c97 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4dR|Ijv*HQ$$$R;w`W#m$UC4_A8pXfqw;$B z-}-wqj&eLrYS_@*E-B%__TW(axwv2V4XZULbjHfH%v{ix*l_r{-v8^tp(z65f=yis z>=wKXjpF(D93yuy#xbijY}>Drz~RUI&aR3p^&xx3;=+S%vI!?!82INHHkzh5R{Z<* z_P>42uRs5f?QQ?>m=n;mU^Qdnnz$EpHovhy@qU3r&DVd*7BUWoOkI*QRwppLVGU4X zQstVlWYZjzh)*|mo=%WrS<_P@d4%QXLB{Hr-)h;Sm18$-f53L<``JJIK`fg%Stf`! zGMorikV?DovHSXgMCR{IKE@u8f9-V-FllzE^b%3#Xij2ZA}P0b!+`_h0Y40m?i9@T eQsI%1V0az>=lJcnYR`b-#^CAd=d#Wzp$Pz+IGCjX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/techreborn/textures/item/tool/painting_tool.png b/src/main/resources/assets/techreborn/textures/item/tool/painting_tool.png index ea7b8e83662e3bf312b3cfbda2765f851b695dd7..17493fe12baf9ff378aa34966d1cc7ee9e8a4afd 100644 GIT binary patch delta 405 zcmV;G0c!r~3aS{}0D2H*Eq^2tEiuc=CjS38WCjzz2?=IrHDn z!h&Jd=FR`1LT~^!03QHpwl*j-o0a}%*kN{slyuvD_5>$sH&=Bm_1&viy(IO1ZaDRXvjd|`W|L^UY_y1UX$bVB)Q!s9uJQ*0Skoa$EYJ#T&FhDi{S#zYN zEJ~EYG{XRf0r)gy10a3yFaT+ea4=xFynQaiZAep57(Uz5Y^X?(kOkdVffT!6rnJkP)K+cKY}k}7^5Z)1?BcdNwi}xk*$3DM z^|J^mkjM}Ut%QD9p`o!KiWP}es40|If6VL)THemNTXPQW9p{{P=Y5{{i}&0Mw$lAs z>O3_7Aj@JlmBBLyt&DWIZhV77pOQFtM~6WWw*$^4{|x%Mu+c5t9r_MA&=A7~s%zunU66u-xm= z6RD^a2Ua-Bb*#vmSdlZ(Bu#2bN=uP;s(>MN3|VwI=3xme?m|zXQA`@m*xbvvaPSRk zNd5PS4C-69?{DE#R$5HE?Yl0!YT8!6DCmy%ewe&3y?%e~{L8V?@j?ImaAmruWwH=B zyL&Fu6~>Gn;4COIX5^jfTtA-kINdBY^^v-gRd+U*w?F&k#j|XZ^zm1Z^fO!gd)AH3 zH4i>@NylgK1=(+t`>LNHYhNAt&^6cF)_Hd7)0;n;cMl9@R!a+9$Bl=rQ)!R%Dk%N! zha&esyK10xWRFIrZ$m$%nd#|hXf#)v_2tjKdv3~Y$m;{!7Fwn1>l5Fk=*WmP(LxXK zXHMVt-;lb71*y5IHriZYN!={$cTJV_m$XD874%MGB69EN*BxUg2hzsAZ#6$?`~tue W<{AFiAu~R5(v#ba8QEAQkM{vj}~t0MZQ7xUtw8tQjPR zPcsO>!=N=w2P^>c?}}rO7?vM@4EEaT)29ih6DF85UVr+DqM2kcwM-w%A|9YbZ%IT!R5;6>l20guaTv$HznMQLJ54F&qFC(>hpD;g zeM_<$bJ&rKv<>x^5pp3Dt+#eqxjVfnO5rk!vdb$ky+xeHsDHKM@E(xa9tZ8Mm2KXA zuTP)v^L_p>K@eb8i9`YbAP54i+ku>EgN_7hlPHQLiXznv6A@{eMm*0OChWhkrfH1h zIP!Qrh(sb_j4=SPRD)+j(>-s(!RPbg8AvEn7H<$vJtNGHuKY~VZhiK$UH^rm*?^Mw+)Y=R|k7ll_g@v5ES{oxX80Y92Q z(wG?dDuMq@usr6V;G%@*>qCTNyRbGeG}hI_J7{O2t((dVoAWv-qa2VLpQPd5Hi|~0 zh_n#);=z2mmU0H7#J)jzTR y#>gOf_lEP^BLg