diff options
author | RealSilverMoon <31100241+RealSilverMoon@users.noreply.github.com> | 2024-02-01 01:15:29 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-31 18:15:29 +0100 |
commit | 787eba0a15c583b240e96630978b9c3539e55fa4 (patch) | |
tree | d4a4ba4e4fb4ea9d09174215581da5c79a6413a2 /src/main/java/gregtech/common/render/GT_RenderDrone.java | |
parent | 19950f533392fdadc5858ba12adce64374414083 (diff) | |
download | GT5-Unofficial-787eba0a15c583b240e96630978b9c3539e55fa4.tar.gz GT5-Unofficial-787eba0a15c583b240e96630978b9c3539e55fa4.tar.bz2 GT5-Unofficial-787eba0a15c583b240e96630978b9c3539e55fa4.zip |
Add Drone Centre (#2412)
* Add Drone Centre
* Apply texture and model
* Update en_US.lang
* Remove import.*
* Switch to block render
* Balance range and break chance
* Add recipe
* Spotless
* Update lang
* Fix recipe
* Rewrite connection system and UI
* Remove debuff party
* Spotless
* Fix server class not found
* A stupid enough recipe
* Another bad recipe
* Update tooltip & i18n
* Close it!
* Spotless
* Disable draggable
* prohibited remote control when centre is offline
* Rename
* Rename; Change specifiers
* Update texture
* spotless
---------
Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gregtech/common/render/GT_RenderDrone.java')
-rw-r--r-- | src/main/java/gregtech/common/render/GT_RenderDrone.java | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/render/GT_RenderDrone.java b/src/main/java/gregtech/common/render/GT_RenderDrone.java new file mode 100644 index 0000000000..af1336a219 --- /dev/null +++ b/src/main/java/gregtech/common/render/GT_RenderDrone.java @@ -0,0 +1,93 @@ +package gregtech.common.render; + +import static gregtech.api.enums.Mods.GregTech; + +import net.minecraft.client.renderer.OpenGlHelper; +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; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.client.registry.ClientRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.common.tileentities.render.TileDrone; + +@SideOnly(Side.CLIENT) +public class GT_RenderDrone extends TileEntitySpecialRenderer { + + private static final ResourceLocation DroneTexture = new ResourceLocation(GregTech.ID, "textures/model/drone.png"); + private static final IModelCustom Drone = AdvancedModelLoader + .loadModel(new ResourceLocation(GregTech.ID, "textures/model/drone.obj")); + + public GT_RenderDrone() { + ClientRegistry.bindTileEntitySpecialRenderer(TileDrone.class, this); + } + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float timeSinceLastTick) { + if (!(tile instanceof TileDrone drone)) return; + final float size = 1.0f; + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); + renderDrone(size); + renderBlade(drone, size); + GL11.glPopMatrix(); + } + + private void renderDrone(double size) { + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + this.bindTexture(DroneTexture); + GL11.glScaled(size, size, size); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240f, 240f); + Drone.renderOnly("drone", "box", "main"); + GL11.glDisable(GL11.GL_BLEND); + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + } + + private void renderBlade(TileDrone drone, double size) { + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + this.bindTexture(DroneTexture); + GL11.glScaled(size, size, size); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240f, 240f); + GL11.glPushMatrix(); + GL11.glTranslated(-0.7d * size, -1 * size, -0.7 * size); + GL11.glRotated(drone.rotation, 0, 1, 0); + GL11.glTranslated(0.7d * size, 1 * size, 0.7 * size); + Drone.renderOnly("blade2"); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glTranslated(-0.7d * size, -1 * size, 0.7 * size); + GL11.glRotated(drone.rotation, 0, 1, 0); + GL11.glTranslated(0.7d * size, 1 * size, -0.7 * size); + Drone.renderOnly("blade3"); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glTranslated(0.7d * size, -1 * size, -0.7 * size); + GL11.glRotated(drone.rotation, 0, 1, 0); + GL11.glTranslated(-0.7d * size, 1 * size, 0.7 * size); + Drone.renderOnly("blade1"); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glTranslated(0.7d * size, -1 * size, 0.7 * size); + GL11.glRotated(drone.rotation, 0, 1, 0); + GL11.glTranslated(-0.7d * size, 1 * size, -0.7 * size); + Drone.renderOnly("blade4"); + GL11.glPopMatrix(); + GL11.glDisable(GL11.GL_BLEND); + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + } +} |