Skip to content

Commit d14a067

Browse files
authored
Merge pull request #1008 from Faotik/large-solar-boiler
Add new Large Solar Boiler
2 parents cc70c3e + 3951cab commit d14a067

File tree

14 files changed

+1166
-0
lines changed

14 files changed

+1166
-0
lines changed

src/main/java/com/Nxer/TwistSpaceTechnology/ClientProxy.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import com.Nxer.TwistSpaceTechnology.client.render.ArtificialStarRender;
66
import com.Nxer.TwistSpaceTechnology.client.render.EyeOfWoodRender;
7+
import com.Nxer.TwistSpaceTechnology.client.render.LargeSolarBoilerRender;
78
import com.Nxer.TwistSpaceTechnology.client.render.TileArcaneHoleRender;
89
import com.Nxer.TwistSpaceTechnology.client.sound.SoundLoader;
910
import com.Nxer.TwistSpaceTechnology.common.machine.TST_BigBroArray;
@@ -29,6 +30,7 @@ public void init(FMLInitializationEvent event) {
2930
new EyeOfWoodRender();
3031
new ArtificialStarRender();
3132
new TileArcaneHoleRender();
33+
new LargeSolarBoilerRender();
3234
MinecraftForge.EVENT_BUS.register(new CooldownEventHandler());// load cooldown HUD
3335
TST_BigBroArray.initializeDefaultTextures();
3436
}
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
package com.Nxer.TwistSpaceTechnology.client.render;
2+
3+
import net.minecraft.client.Minecraft;
4+
import net.minecraft.client.renderer.OpenGlHelper;
5+
import net.minecraft.client.renderer.Tessellator;
6+
import net.minecraft.client.renderer.texture.TextureMap;
7+
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
8+
import net.minecraft.tileentity.TileEntity;
9+
import net.minecraft.util.IIcon;
10+
import net.minecraftforge.fluids.Fluid;
11+
12+
import org.lwjgl.opengl.GL11;
13+
14+
import com.Nxer.TwistSpaceTechnology.common.tile.TileLargeSolarBoilerRender;
15+
16+
import cpw.mods.fml.client.registry.ClientRegistry;
17+
import cpw.mods.fml.relauncher.Side;
18+
import cpw.mods.fml.relauncher.SideOnly;
19+
import gtPlusPlus.core.util.minecraft.FluidUtils;
20+
21+
@SideOnly(Side.CLIENT)
22+
public class LargeSolarBoilerRender extends TileEntitySpecialRenderer {
23+
24+
public LargeSolarBoilerRender() {
25+
ClientRegistry.bindTileEntitySpecialRenderer(TileLargeSolarBoilerRender.class, this);
26+
}
27+
28+
@Override
29+
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float timeSinceLastTick) {
30+
TileLargeSolarBoilerRender tile = (TileLargeSolarBoilerRender) te;
31+
32+
int xRightOffset = tile.xRightOffset;
33+
int zRightOffset = tile.zRightOffset;
34+
35+
GL11.glEnable(GL11.GL_BLEND);
36+
OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0);
37+
GL11.glDisable(GL11.GL_LIGHTING);
38+
39+
Fluid water = FluidUtils.getWater(1)
40+
.getFluid();
41+
Fluid steam = FluidUtils.getSteam(1)
42+
.getFluid();
43+
44+
GL11.glPushMatrix();
45+
GL11.glTranslated(x - 1, y, z - 1);
46+
renderFluidCuboid(water, 0f, 0f, 0f, 3f, 1f, 3f);
47+
GL11.glPopMatrix();
48+
49+
GL11.glPushMatrix();
50+
GL11.glTranslated(x + xRightOffset * 5, y, z + zRightOffset * 5);
51+
renderFluidCuboid(steam, 0f, 0f, 0f, 1f, 1f, 1f);
52+
GL11.glPopMatrix();
53+
54+
GL11.glPushMatrix();
55+
GL11.glTranslated(x + xRightOffset * -5, y, z + zRightOffset * -5);
56+
renderFluidCuboid(water, 0f, 0f, 0f, 1f, 1f, 1f);
57+
GL11.glPopMatrix();
58+
59+
GL11.glEnable(GL11.GL_LIGHTING);
60+
GL11.glDisable(GL11.GL_BLEND);
61+
62+
}
63+
64+
public static void renderFluidCuboid(Fluid fluid, float minX, float minY, float minZ, float maxX, float maxY,
65+
float maxZ) {
66+
if (fluid == null) return;
67+
68+
Minecraft mc = Minecraft.getMinecraft();
69+
Tessellator tess = Tessellator.instance;
70+
71+
mc.getTextureManager()
72+
.bindTexture(TextureMap.locationBlocksTexture);
73+
74+
IIcon icon = fluid.getStillIcon();
75+
if (icon == null) return;
76+
77+
minX += 0.001f;
78+
minY += 0.001f;
79+
minZ += 0.001f;
80+
maxX -= 0.001f;
81+
maxY -= 0.001f;
82+
maxZ -= 0.001f;
83+
84+
tess.startDrawingQuads();
85+
86+
double u0 = icon.getInterpolatedU(0);
87+
double u16 = icon.getInterpolatedU(16);
88+
double v0 = icon.getInterpolatedV(0);
89+
double v16 = icon.getInterpolatedV(16);
90+
91+
for (int bx = 0; bx < (int) Math.ceil(maxX); bx++) {
92+
for (int bz = 0; bz < (int) Math.ceil(maxZ); bz++) {
93+
tess.addVertexWithUV(bx, maxY, bz + 1, u0, v16);
94+
tess.addVertexWithUV(bx + 1, maxY, bz + 1, u16, v16);
95+
tess.addVertexWithUV(bx + 1, maxY, bz, u16, v0);
96+
tess.addVertexWithUV(bx, maxY, bz, u0, v0);
97+
98+
tess.addVertexWithUV(bx, minY, bz, u0, v16);
99+
tess.addVertexWithUV(bx + 1, minY, bz, u16, v16);
100+
tess.addVertexWithUV(bx + 1, minY, bz + 1, u16, v0);
101+
tess.addVertexWithUV(bx, minY, bz + 1, u0, v0);
102+
}
103+
}
104+
105+
for (int bx = 0; bx < (int) Math.ceil(maxX); bx++) {
106+
for (int by = 0; by < (int) Math.ceil(maxY); by++) {
107+
tess.addVertexWithUV(bx, by, maxZ, u0, v16);
108+
tess.addVertexWithUV(bx + 1, by, maxZ, u16, v16);
109+
tess.addVertexWithUV(bx + 1, by + 1, maxZ, u16, v0);
110+
tess.addVertexWithUV(bx, by + 1, maxZ, u0, v0);
111+
112+
tess.addVertexWithUV(bx + 1, by, minZ, u0, v16);
113+
tess.addVertexWithUV(bx, by, minZ, u16, v16);
114+
tess.addVertexWithUV(bx, by + 1, minZ, u16, v0);
115+
tess.addVertexWithUV(bx + 1, by + 1, minZ, u0, v0);
116+
}
117+
}
118+
119+
for (int bz = 0; bz < (int) Math.ceil(maxZ); bz++) {
120+
for (int by = 0; by < (int) Math.ceil(maxY); by++) {
121+
tess.addVertexWithUV(minX, by, bz, u0, v16);
122+
tess.addVertexWithUV(minX, by, bz + 1, u16, v16);
123+
tess.addVertexWithUV(minX, by + 1, bz + 1, u16, v0);
124+
tess.addVertexWithUV(minX, by + 1, bz, u0, v0);
125+
126+
tess.addVertexWithUV(maxX, by, bz + 1, u0, v16);
127+
tess.addVertexWithUV(maxX, by, bz, u16, v16);
128+
tess.addVertexWithUV(maxX, by + 1, bz, u16, v0);
129+
tess.addVertexWithUV(maxX, by + 1, bz + 1, u0, v0);
130+
}
131+
}
132+
133+
tess.draw();
134+
}
135+
}

src/main/java/com/Nxer/TwistSpaceTechnology/common/GTCMItemList.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@ public enum GTCMItemList {
294294
HyperThermalConvector,
295295
MeteorMiner,
296296
UniversalGenerator,
297+
LargeSolarBoiler,
297298
// endregion
298299

299300
// region Modularized Machines
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.Nxer.TwistSpaceTechnology.common.block;
2+
3+
import java.util.ArrayList;
4+
5+
import net.minecraft.block.Block;
6+
import net.minecraft.block.material.Material;
7+
import net.minecraft.client.renderer.texture.IIconRegister;
8+
import net.minecraft.entity.Entity;
9+
import net.minecraft.entity.player.EntityPlayer;
10+
import net.minecraft.item.ItemStack;
11+
import net.minecraft.tileentity.TileEntity;
12+
import net.minecraft.util.AxisAlignedBB;
13+
import net.minecraft.world.IBlockAccess;
14+
import net.minecraft.world.World;
15+
16+
import com.Nxer.TwistSpaceTechnology.client.TstCreativeTabs;
17+
import com.Nxer.TwistSpaceTechnology.common.tile.TileLargeSolarBoilerRender;
18+
19+
import cpw.mods.fml.relauncher.Side;
20+
import cpw.mods.fml.relauncher.SideOnly;
21+
22+
public class BlockLargeSolarBoilerRender extends Block {
23+
24+
public BlockLargeSolarBoilerRender() {
25+
super(Material.iron);
26+
this.setResistance(20f);
27+
this.setHardness(-1.0f);
28+
this.setCreativeTab(TstCreativeTabs.TabGeneral);
29+
this.setBlockName("tst.largesolarboilerrender");
30+
this.setLightLevel(0.0f);
31+
}
32+
33+
@Override
34+
@SideOnly(Side.CLIENT)
35+
public void registerBlockIcons(IIconRegister iconRegister) {
36+
blockIcon = iconRegister.registerIcon("gtnhcommunitymod:TRANSPARENT");
37+
}
38+
39+
@Override
40+
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
41+
return null;
42+
}
43+
44+
@Override
45+
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
46+
this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.0F, 1.0F, 0.0F);
47+
}
48+
49+
@Override
50+
public boolean isOpaqueCube() {
51+
return false;
52+
}
53+
54+
@Override
55+
public boolean canRenderInPass(int a) {
56+
return true;
57+
}
58+
59+
@Override
60+
public boolean renderAsNormalBlock() {
61+
return false;
62+
}
63+
64+
@Override
65+
public boolean canHarvestBlock(EntityPlayer player, int meta) {
66+
return false;
67+
}
68+
69+
@Override
70+
public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity entity) {
71+
return false;
72+
}
73+
74+
@Override
75+
public boolean hasTileEntity(int metadata) {
76+
return true;
77+
}
78+
79+
@Override
80+
public TileEntity createTileEntity(World world, int metadata) {
81+
return new TileLargeSolarBoilerRender();
82+
}
83+
84+
@Override
85+
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int meta, int fortune) {
86+
return new ArrayList<>();
87+
}
88+
89+
@Override
90+
public int getRenderType() {
91+
return -1;
92+
}
93+
}

src/main/java/com/Nxer/TwistSpaceTechnology/common/init/BlockRegister.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static com.Nxer.TwistSpaceTechnology.TwistSpaceTechnology.RESOURCE_ROOT_ID;
44
import static com.Nxer.TwistSpaceTechnology.common.init.TstBlocks.BlockArcaneHole;
55
import static com.Nxer.TwistSpaceTechnology.common.init.TstBlocks.BlockEyeOfWoodRender;
6+
import static com.Nxer.TwistSpaceTechnology.common.init.TstBlocks.BlockLargeSolarBoilerRender;
67
import static com.Nxer.TwistSpaceTechnology.common.init.TstBlocks.BlockStar;
78
import static com.Nxer.TwistSpaceTechnology.common.init.TstBlocks.MetaBlock01;
89
import static com.Nxer.TwistSpaceTechnology.common.init.TstBlocks.MetaBlockCasing01;
@@ -19,6 +20,7 @@
1920
import com.Nxer.TwistSpaceTechnology.common.material.MaterialsTST;
2021
import com.Nxer.TwistSpaceTechnology.common.tile.TileArcaneHole;
2122
import com.Nxer.TwistSpaceTechnology.common.tile.TileEyeOfWoodRender;
23+
import com.Nxer.TwistSpaceTechnology.common.tile.TileLargeSolarBoilerRender;
2224
import com.Nxer.TwistSpaceTechnology.common.tile.TilePowerChair;
2325
import com.Nxer.TwistSpaceTechnology.common.tile.TileStar;
2426
import com.Nxer.TwistSpaceTechnology.config.Config;
@@ -90,6 +92,8 @@ public static void registryBlocks() {
9092
GameRegistry.registerTileEntity(TilePowerChair.class, "TilePowerChair");
9193
GameRegistry.registerTileEntity(TileArcaneHole.class, "TileArcaneHole");
9294
GameRegistry.registerTileEntity(TileEntityLaserBeacon.class, "MeteorMinerRenderer");
95+
GameRegistry.registerBlock(BlockLargeSolarBoilerRender, BlockLargeSolarBoilerRender.unlocalizedName);
96+
GameRegistry.registerTileEntity(TileLargeSolarBoilerRender.class, "TileLargeSolarBoilerRender");
9397

9498
GameRegistry.registerBlock(TstBlocks.TimeBendingSpeedRune, "TimeBendingSpeedRune");
9599
}

src/main/java/com/Nxer/TwistSpaceTechnology/common/init/TstBlocks.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import com.Nxer.TwistSpaceTechnology.common.block.BlockArcaneHole;
66
import com.Nxer.TwistSpaceTechnology.common.block.BlockEyeOfWoodRender;
7+
import com.Nxer.TwistSpaceTechnology.common.block.BlockLargeSolarBoilerRender;
78
import com.Nxer.TwistSpaceTechnology.common.block.BlockLaserBeacon;
89
import com.Nxer.TwistSpaceTechnology.common.block.BlockPowerChair;
910
import com.Nxer.TwistSpaceTechnology.common.block.BlockStar;
@@ -62,4 +63,6 @@ public class TstBlocks {
6263
public static final BlockMultiUseCore MultiUseCore = new BlockMultiUseCore();
6364

6465
public static Block LaserBeaconRender = new BlockLaserBeacon();
66+
67+
public static final Block BlockLargeSolarBoilerRender = new BlockLargeSolarBoilerRender();
6568
}

0 commit comments

Comments
 (0)