mirror of
https://github.com/GTNewHorizons/Chisel.git
synced 2026-11-12 16:27:45 +00:00
This should be all of the changes I made AFTER I ran the bogus merge, clearying out tterag's work
This commit is contained in:
1 parent
256911259d
commit
f173222edc
3 files changed
+316
-302
No files matched your search
@@ -1,201 +1,165 @@
|
||||
package com.cricketcraft.chisel.client.render;
|
||||
|
||||
import com.cricketcraft.chisel.config.Configurations;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import com.cricketcraft.chisel.api.IFacade;
|
||||
|
||||
/**
|
||||
* The CTM renderer will draw the block's FACE using by assembling 4 quadrants from the 5 available block
|
||||
* textures. The normal Texture.png is the blocks "unconnected" texture, and is used when CTM is disabled or the block
|
||||
* has nothing to connect to. This texture has all of the outside corner quadrants The texture-ctm.png contains the
|
||||
* rest of the quadrants.
|
||||
*
|
||||
* ┌─────────────────┐ ┌────────────────────────────────┐
|
||||
* │ texture.png │ │ texture-ctm.png │
|
||||
* │ ╔══════╤══════╗ │ │ ──────┼────── ║ ─────┼───── ║ │
|
||||
* │ ║ │ ║ │ │ │ │ │║ │ ║ │
|
||||
* │ ║ 16 │ 17 ║ │ │ │ 0 │ 1 │║ 2 │ 3 ║ │
|
||||
* │ ╟──────┼──────╢ │ │ ┼──────┼──────┼╟──────┼──────╢ │
|
||||
* │ ║ │ ║ │ │ │ │ │║ │ ║ │
|
||||
* │ ║ 18 │ 19 ║ │ │ │ 4 │ 5 │║ 6 │ 7 ║ │
|
||||
* │ ╚══════╧══════╝ │ │ ──────┼────── ║ ─────┼───── ║ │
|
||||
* └─────────────────┘ │ ═══════╤═══════╝ ─────┼───── ╚ │
|
||||
* │ │ │ ││ │ │ │
|
||||
* │ │ 8 │ 9 ││ 10 │ 11 │ │
|
||||
* │ ┼──────┼──────┼┼──────┼──────┼ │
|
||||
* │ │ │ ││ │ │ │
|
||||
* │ │ 12 │ 13 ││ 14 │ 15 │ │
|
||||
* │ ═══════╧═══════╗ ─────┼───── ╔ │
|
||||
* └────────────────────────────────┘
|
||||
* ┌─────────────────┐ ┌────────────────────────────────┐
|
||||
* │ texture.png │ │ texture-ctm.png │
|
||||
* │ ╔══════╤══════╗ │ │ ──────┼────── ║ ─────┼───── ║ │
|
||||
* │ ║ │ ║ │ │ │ │ │║ │ ║ │
|
||||
* │ ║ 16 │ 17 ║ │ │ │ 0 │ 1 │║ 2 │ 3 ║ │
|
||||
* │ ╟──────┼──────╢ │ │ ┼──────┼──────┼╟──────┼──────╢ │
|
||||
* │ ║ │ ║ │ │ │ │ │║ │ ║ │
|
||||
* │ ║ 18 │ 19 ║ │ │ │ 4 │ 5 │║ 6 │ 7 ║ │
|
||||
* │ ╚══════╧══════╝ │ │ ──────┼────── ║ ─────┼───── ║ │
|
||||
* └─────────────────┘ │ ═══════╤═══════╝ ─────┼───── ╚ │
|
||||
* │ │ │ ││ │ │ │
|
||||
* │ │ 8 │ 9 ││ 10 │ 11 │ │
|
||||
* │ ┼──────┼──────┼┼──────┼──────┼ │
|
||||
* │ │ │ ││ │ │ │
|
||||
* │ │ 12 │ 13 ││ 14 │ 15 │ │
|
||||
* │ ═══════╧═══════╗ ─────┼───── ╔ │
|
||||
* └────────────────────────────────┘
|
||||
*
|
||||
* combining { 18, 13, 9, 16 }, we can generate a texture connected to the right!
|
||||
*
|
||||
* ╔══════╤═══════
|
||||
* ║ │ │
|
||||
* ║ 16 │ 9 │
|
||||
* ╟──────┼──────┼
|
||||
* ║ │ │
|
||||
* ║ 18 │ 13 │
|
||||
* ╚══════╧═══════
|
||||
* ╔══════╤═══════
|
||||
* ║ │ │
|
||||
* ║ 16 │ 9 │
|
||||
* ╟──────┼──────┼
|
||||
* ║ │ │
|
||||
* ║ 18 │ 13 │
|
||||
* ╚══════╧═══════
|
||||
*
|
||||
*
|
||||
* combining { 18, 13, 11, 2 }, we can generate a texture, in the shape of an L (connected to the right, and up
|
||||
*
|
||||
* ║ ─────┼───── ╚
|
||||
* ║ │ │
|
||||
* ║ 2 │ 11 │
|
||||
* ╟──────┼──────┼
|
||||
* ║ │ │
|
||||
* ║ 18 │ 13 │
|
||||
* ╚══════╧═══════
|
||||
* ║ ─────┼───── ╚
|
||||
* ║ │ │
|
||||
* ║ 2 │ 11 │
|
||||
* ╟──────┼──────┼
|
||||
* ║ │ │
|
||||
* ║ 18 │ 13 │
|
||||
* ╚══════╧═══════
|
||||
*
|
||||
*
|
||||
* HAVE FUN!
|
||||
* -CptRageToaster-
|
||||
*
|
||||
* TODO: Everything
|
||||
*/
|
||||
|
||||
|
||||
public class CTM {
|
||||
|
||||
/**
|
||||
* The quads are ordered the same here, and in the renderer:
|
||||
* 1. Lower left
|
||||
* 2. Lower Right
|
||||
* 3. Top Right
|
||||
* 4. Top Left
|
||||
*/
|
||||
static int submaps[][] = {
|
||||
{ 18, 19, 17, 16 }, // 0 - No connection, with border
|
||||
|
||||
{ 18, 19, 3, 2 }, // 1 - Connected from above
|
||||
{ 18, 13, 9, 16 }, // 2 - Connected to the right
|
||||
{ 6, 7, 17, 16 }, // 3 - Connected from below
|
||||
{ 12, 19, 17, 8 }, // 4 - Connected to the left
|
||||
|
||||
{ 6, 7, 3, 2 }, // 5 - ║
|
||||
{ 12, 13, 9, 8 }, // 6 - ═
|
||||
{ 18, 13, 11, 2 }, // 7 - ╚ with inside corner
|
||||
{ 6, 15, 3, 16 }, // 8 - ╔ with inside corner
|
||||
{ 14, 7, 17, 8 }, // 9 - ╗ with inside corner
|
||||
{ 12, 19, 3, 10 }, // 10 - ╝ with inside corner
|
||||
|
||||
{ 18, 13, 1, 2 }, // 11 - ╚ no inside corner
|
||||
{ 6, 5, 3, 16 }, // 12 - ╔ no inside corner
|
||||
{ 4, 7, 17, 8 }, // 13 - ╗ no inside corner
|
||||
{ 12, 19, 3, 0 }, // 14 - ╝ no inside corner
|
||||
|
||||
{ 6, 15, 11, 2 }, // 15 - ╠ with inside corners
|
||||
{ 14, 15, 9, 8 }, // 16 - ╦ with inside corners
|
||||
{ 14, 7, 3, 10 }, // 17 - ╣ with inside corners
|
||||
{ 12, 13, 11, 10 }, // 18 - ╩ with inside corners
|
||||
|
||||
{ 6, 5, 11, 2 }, // 23 - ╠ with top right inside corner
|
||||
{ 4, 15, 9, 8 }, // 24 - ╦ with bottom right inside corner
|
||||
{ 14, 7, 3, 0 }, // 25 - ╣ with bottom left inside corner
|
||||
{ 12, 13, 1, 10 }, // 26 - ╩ with top left inside corner
|
||||
|
||||
{ 6, 15, 1, 2 }, // 19 - ╠ with bottom right inside corner
|
||||
{ 14, 5, 9, 8 }, // 20 - ╦ with bottom left inside corner
|
||||
{ 4, 7, 3, 10 }, // 21 - ╣ with top left inside corner
|
||||
{ 12, 13, 11, 0 }, // 22 - ╩ with top right inside corner
|
||||
|
||||
{ 6, 5, 1, 2 }, // 27 - ╠ no inside corners
|
||||
{ 4, 5, 9, 8 }, // 28 - ╦ no inside corners
|
||||
{ 4, 7, 3, 0 }, // 29 - ╣ no inside corners
|
||||
{ 12, 13, 1, 0 }, // 30 - ╩ no inside corners
|
||||
|
||||
{ 14, 15, 11, 10 }, // 31 - ╬, with all inside corners
|
||||
|
||||
{ 14, 5, 11, 10 }, // 32 - ╬, with all but bottom right inside corner
|
||||
{ 4, 15, 11, 10 }, // 33 - ╬, with all but bottom left inside corner
|
||||
{ 14, 15, 11, 0 }, // 34 - ╬, with all but top left inside corner
|
||||
{ 14, 15, 1, 10 }, // 35 - ╬, with all but top right inside corner
|
||||
|
||||
{ 4, 5, 11, 10 }, // 36 - ╬, with top inside corners
|
||||
{ 4, 15, 11, 0 }, // 37 - ╬, with right inside corners
|
||||
{ 14, 15, 1, 0 }, // 38 - ╬, with right inside corners
|
||||
{ 14, 5, 1, 10 }, // 39 - ╬, with left inside corners
|
||||
{ 4, 15, 1, 10 }, // 40 - ╬, with top left and bottom right inside corners
|
||||
{ 14, 5, 11, 0 }, // 41 - ╬, with top right and bottom left inside corners
|
||||
|
||||
{ 4, 5, 1, 10 }, // 42 - ╬, with top left inside corner
|
||||
{ 4, 5, 11, 0 }, // 43 - ╬, with top right inside corner
|
||||
{ 4, 15, 1, 0 }, // 44 - ╬, with bottom right inside corner
|
||||
{ 14, 5, 1, 0 }, // 45 - ╬, with bottom left inside corner
|
||||
|
||||
{ 4, 5, 1, 0 }, // 46 - ╬, no inside corners
|
||||
};
|
||||
|
||||
public static int[] getSubmapIndices(IBlockAccess world, int x, int y, int z, int side) {
|
||||
int index = getTexture(world, x, y, z, side);
|
||||
|
||||
return submaps[index];
|
||||
}
|
||||
|
||||
public static int getTexture(IBlockAccess world, int x, int y, int z, int side) {
|
||||
if (world == null)
|
||||
return 0;
|
||||
return new int[] { 18, 19, 17, 16 };
|
||||
|
||||
int texture = 0;
|
||||
Block block = world.getBlock(x, y, z);
|
||||
int blockMetadata = world.getBlockMetadata(x, y, z);
|
||||
|
||||
boolean b[] = new boolean[8];
|
||||
/**
|
||||
* b[0] b[1] b[2]
|
||||
*
|
||||
*
|
||||
*
|
||||
* b[3] FACE b[4]
|
||||
*
|
||||
*
|
||||
*
|
||||
* b[5] b[6] b[7]
|
||||
*/
|
||||
if (side == 0) {
|
||||
//TODO:
|
||||
b[0] = isConnected(world, x - 1, y, z, side, block, blockMetadata);
|
||||
b[1] = isConnected(world, x + 1, y, z, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x, y, z + 1, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x, y, z - 1, side, block, blockMetadata);
|
||||
} else if (side == 1) {
|
||||
//TODO:
|
||||
b[0] = isConnected(world, x - 1, y, z, side, block, blockMetadata);
|
||||
b[1] = isConnected(world, x + 1, y, z, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x, y, z - 1, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x, y, z + 1, side, block, blockMetadata);
|
||||
} else if (side == 2) {
|
||||
//TODO:
|
||||
b[0] = isConnected(world, x + 1, y, z, side, block, blockMetadata);
|
||||
b[1] = isConnected(world, x - 1, y, z, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x, y - 1, z, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x, y + 1, z, side, block, blockMetadata);
|
||||
} else if (side == 3) {
|
||||
//TODO:
|
||||
b[0] = isConnected(world, x - 1, y, z, side, block, blockMetadata);
|
||||
b[1] = isConnected(world, x + 1, y, z, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x, y - 1, z, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x, y + 1, z, side, block, blockMetadata);
|
||||
} else if (side == 4) {
|
||||
//TODO:
|
||||
b[0] = isConnected(world, x, y, z - 1, side, block, blockMetadata);
|
||||
/**
|
||||
* b[0] b[1] b[2]
|
||||
*
|
||||
*
|
||||
*
|
||||
* b[3] FACE b[4]
|
||||
*
|
||||
*
|
||||
*
|
||||
* b[5] b[6] b[7]
|
||||
*/
|
||||
if (side == 0) {
|
||||
b[0] = isConnected(world, x - 1, y, z + 1, side, block, blockMetadata);
|
||||
b[1] = isConnected(world, x, y, z + 1, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x, y - 1, z, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x, y + 1, z, side, block, blockMetadata);
|
||||
} else if (side == 5) {
|
||||
//TODO:
|
||||
b[0] = isConnected(world, x, y, z + 1, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x + 1, y, z + 1, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x - 1, y, z, side, block, blockMetadata);
|
||||
b[4] = isConnected(world, x + 1, y, z, side, block, blockMetadata);
|
||||
b[5] = isConnected(world, x - 1, y, z - 1, side, block, blockMetadata);
|
||||
b[6] = isConnected(world, x, y, z - 1, side, block, blockMetadata);
|
||||
b[7] = isConnected(world, x + 1, y, z - 1, side, block, blockMetadata);
|
||||
} else if (side == 1) {
|
||||
b[0] = isConnected(world, x - 1, y, z - 1, side, block, blockMetadata);
|
||||
b[1] = isConnected(world, x, y, z - 1, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x, y - 1, z, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x, y + 1, z, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x + 1, y, z - 1, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x - 1, y, z, side, block, blockMetadata);
|
||||
b[4] = isConnected(world, x + 1, y, z, side, block, blockMetadata);
|
||||
b[5] = isConnected(world, x - 1, y, z + 1, side, block, blockMetadata);
|
||||
b[6] = isConnected(world, x, y, z + 1, side, block, blockMetadata);
|
||||
b[7] = isConnected(world, x + 1, y, z + 1, side, block, blockMetadata);
|
||||
} else if (side == 2) {
|
||||
b[0] = isConnected(world, x + 1, y + 1, z, side, block, blockMetadata);
|
||||
b[1] = isConnected(world, x, y + 1, z, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x - 1, y + 1, z, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x + 1, y, z, side, block, blockMetadata);
|
||||
b[4] = isConnected(world, x - 1, y, z, side, block, blockMetadata);
|
||||
b[5] = isConnected(world, x + 1, y - 1, z, side, block, blockMetadata);
|
||||
b[6] = isConnected(world, x, y - 1, z, side, block, blockMetadata);
|
||||
b[7] = isConnected(world, x - 1, y - 1, z, side, block, blockMetadata);
|
||||
} else if (side == 3) {
|
||||
b[0] = isConnected(world, x - 1, y + 1, z, side, block, blockMetadata);
|
||||
b[1] = isConnected(world, x, y + 1, z, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x + 1, y + 1, z, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x - 1, y, z, side, block, blockMetadata);
|
||||
b[4] = isConnected(world, x + 1, y, z, side, block, blockMetadata);
|
||||
b[5] = isConnected(world, x - 1, y - 1, z, side, block, blockMetadata);
|
||||
b[6] = isConnected(world, x, y - 1, z, side, block, blockMetadata);
|
||||
b[7] = isConnected(world, x + 1, y - 1, z, side, block, blockMetadata);
|
||||
} else if (side == 4) {
|
||||
b[0] = isConnected(world, x, y + 1, z - 1, side, block, blockMetadata);
|
||||
b[1] = isConnected(world, x, y + 1, z, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x, y + 1, z + 1, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x, y, z - 1, side, block, blockMetadata);
|
||||
b[4] = isConnected(world, x, y, z + 1, side, block, blockMetadata);
|
||||
b[5] = isConnected(world, x, y - 1, z - 1, side, block, blockMetadata);
|
||||
b[6] = isConnected(world, x, y - 1, z, side, block, blockMetadata);
|
||||
b[7] = isConnected(world, x, y - 1, z + 1, side, block, blockMetadata);
|
||||
} else if (side == 5) {
|
||||
b[0] = isConnected(world, x, y + 1, z + 1, side, block, blockMetadata);
|
||||
b[1] = isConnected(world, x, y + 1, z, side, block, blockMetadata);
|
||||
b[2] = isConnected(world, x, y + 1, z - 1, side, block, blockMetadata);
|
||||
b[3] = isConnected(world, x, y, z + 1, side, block, blockMetadata);
|
||||
b[4] = isConnected(world, x, y, z - 1, side, block, blockMetadata);
|
||||
b[5] = isConnected(world, x, y - 1, z + 1, side, block, blockMetadata);
|
||||
b[6] = isConnected(world, x, y - 1, z, side, block, blockMetadata);
|
||||
b[7] = isConnected(world, x, y - 1, z - 1, side, block, blockMetadata);
|
||||
}
|
||||
|
||||
//TODO: return something other than zero
|
||||
int[] ret = new int[] { 18, 19, 17, 16 };
|
||||
|
||||
return texture;
|
||||
// Bottom Left
|
||||
if (b[3] || b[6]) {
|
||||
ret[0] = 4 + (b[6] ? 2 : 0) + (b[3] ? 8 : 0);
|
||||
if (b[3] && b[5] && b[6]) ret[0] = 4;
|
||||
}
|
||||
|
||||
// Bottom Right
|
||||
if (b[6] || b[4]) {
|
||||
ret[1] = 5 + (b[6] ? 2 : 0) + (b[4] ? 8 : 0);
|
||||
if (b[4] && b[6] && b[7]) ret[1] = 5;
|
||||
}
|
||||
|
||||
// Top Right
|
||||
if (b[4] || b[1]) {
|
||||
ret[2] = 1 + (b[1] ? 2 : 0) + (b[4] ? 8 : 0);
|
||||
if (b[1] && b[2] && b[4]) ret[2] = 1;
|
||||
}
|
||||
|
||||
// Top Left
|
||||
if (b[1] || b[3]) {
|
||||
ret[3] = (b[1] ? 2 : 0) + (b[3] ? 8 : 0);
|
||||
if (b[0] && b[1] && b[3]) ret[3] = 0;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static boolean isConnected(IBlockAccess world, int x, int y, int z, int side, Block block, int meta) {
|
||||
@@ -205,25 +169,25 @@ public class CTM {
|
||||
int x2 = x + dir.offsetX;
|
||||
int y2 = y + dir.offsetY;
|
||||
int z2 = z + dir.offsetZ;
|
||||
|
||||
|
||||
Block con = getBlockOrFacade(world, x, y, z, side);
|
||||
Block obscuring = getBlockOrFacade(world, x2, y2, z2, side);
|
||||
|
||||
|
||||
// no block or a bad API user
|
||||
if (con == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
boolean ret = con.equals(block) && getBlockOrFacadeMetadata(world, x, y, z, side) == meta;
|
||||
|
||||
|
||||
// no block obscuring this face
|
||||
if (obscuring == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// check that we aren't already connected outwards from this side
|
||||
ret &= !(obscuring.equals(block) && getBlockOrFacadeMetadata(world, x2, y2, z2, side) == meta);
|
||||
|
||||
ret &= !(obscuring.equals(block) && getBlockOrFacadeMetadata(world, x2, y2, z2, side) == meta && Configurations.connectInsideCTM);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -242,4 +206,4 @@ public class CTM {
|
||||
}
|
||||
return blk;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,6 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
* X, Y, Z, or any combination means that the axes listed in the name are at 1.
|
||||
* X, Y, Z, or any combination followed by HALF means that those axes are at 0.5.
|
||||
* X, Y, Z, or any combination after a HALF means those axes are at 1.
|
||||
*
|
||||
*/
|
||||
enum Vert {
|
||||
|
||||
@@ -61,8 +60,7 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
|
||||
void render(RenderBlocksCTM inst, int cacheID) {
|
||||
if (inst.enableAO) {
|
||||
// TODO: Get this back in
|
||||
// inst.tessellator.setColorOpaque_F(inst.redCache[cacheID], inst.greenCache[cacheID], inst.blueCache[cacheID]);
|
||||
inst.tessellator.setColorOpaque_F(inst.redCache[cacheID], inst.grnCache[cacheID], inst.bluCache[cacheID]);
|
||||
inst.tessellator.setBrightness(inst.lightingCache[cacheID]);
|
||||
}
|
||||
|
||||
@@ -72,18 +70,18 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
|
||||
/**
|
||||
* Each side is divided into 4 sub-sides. LB(left bottom), RB(right bottom), LT(right top), and RT(right top).
|
||||
* <p>
|
||||
*
|
||||
* Each sub-side contains 4 {@link Vert} objects representing its position on the block.
|
||||
*/
|
||||
enum SubSide {
|
||||
XNEG_LB(ZERO, Z_HALF, YZ_HALF, Y_HALF), XNEG_RB(Z_HALF, Z, Y_HALF_Z, YZ_HALF), XNEG_RT(YZ_HALF, Y_HALF_Z, YZ, Z_HALF_Y), XNEG_LT(Y_HALF, YZ_HALF, Z_HALF_Y, Y),
|
||||
XPOS_LB(XZ, Z_HALF_X, YZ_HALF_X, Y_HALF_XZ), XPOS_RB(Z_HALF_X, X, Y_HALF_X, YZ_HALF_X), XPOS_RT(YZ_HALF_X, Y_HALF_X, XY, Z_HALF_XY), XPOS_LT(Y_HALF_XZ, YZ_HALF_X, Z_HALF_XY, XYZ),
|
||||
XNEG_LB(ZERO, Z_HALF, YZ_HALF, Y_HALF), XNEG_RB(Z_HALF, Z, Y_HALF_Z, YZ_HALF), XNEG_RT(YZ_HALF, Y_HALF_Z, YZ, Z_HALF_Y), XNEG_LT(Y_HALF, YZ_HALF, Z_HALF_Y, Y),
|
||||
XPOS_LB(XZ, Z_HALF_X, YZ_HALF_X, Y_HALF_XZ), XPOS_RB(Z_HALF_X, X, Y_HALF_X, YZ_HALF_X), XPOS_RT(YZ_HALF_X, Y_HALF_X, XY, Z_HALF_XY), XPOS_LT(Y_HALF_XZ, YZ_HALF_X, Z_HALF_XY, XYZ),
|
||||
|
||||
ZNEG_LB(X, X_HALF, XY_HALF, Y_HALF_X), ZNEG_RB(X_HALF, ZERO, Y_HALF, XY_HALF), ZNEG_RT(XY_HALF, Y_HALF, Y, X_HALF_Y), ZNEG_LT(Y_HALF_X, XY_HALF, X_HALF_Y, XY),
|
||||
ZPOS_LB(Z, X_HALF_Z, XY_HALF_Z, Y_HALF_Z), ZPOS_RB(X_HALF_Z, XZ, Y_HALF_XZ, XY_HALF_Z), ZPOS_RT(XY_HALF_Z, Y_HALF_XZ, XYZ, X_HALF_YZ), ZPOS_LT(Y_HALF_Z, XY_HALF_Z, X_HALF_YZ, YZ),
|
||||
ZNEG_LB(X, X_HALF, XY_HALF, Y_HALF_X), ZNEG_RB(X_HALF, ZERO, Y_HALF, XY_HALF), ZNEG_RT(XY_HALF, Y_HALF, Y, X_HALF_Y), ZNEG_LT(Y_HALF_X, XY_HALF, X_HALF_Y, XY),
|
||||
ZPOS_LB(Z, X_HALF_Z, XY_HALF_Z, Y_HALF_Z), ZPOS_RB(X_HALF_Z, XZ, Y_HALF_XZ, XY_HALF_Z), ZPOS_RT(XY_HALF_Z, Y_HALF_XZ, XYZ, X_HALF_YZ), ZPOS_LT(Y_HALF_Z, XY_HALF_Z, X_HALF_YZ, YZ),
|
||||
|
||||
YNEG_LB(ZERO, X_HALF, XZ_HALF, Z_HALF), YNEG_RB(X_HALF, X, Z_HALF_X, XZ_HALF), YNEG_RT(XZ_HALF, Z_HALF_X, XZ, X_HALF_Z), YNEG_LT(Z_HALF, XZ_HALF, X_HALF_Z, Z),
|
||||
YPOS_LB(YZ, X_HALF_YZ, XZ_HALF_Y, Z_HALF_Y), YPOS_RB(X_HALF_YZ, XYZ, Z_HALF_XY, XZ_HALF_Y), YPOS_RT(XZ_HALF_Y, Z_HALF_XY, XY, X_HALF_Y), YPOS_LT(Z_HALF_Y, XZ_HALF_Y, X_HALF_Y, Y);
|
||||
YNEG_LB(ZERO, X_HALF, XZ_HALF, Z_HALF), YNEG_RB(X_HALF, X, Z_HALF_X, XZ_HALF), YNEG_RT(XZ_HALF, Z_HALF_X, XZ, X_HALF_Z), YNEG_LT(Z_HALF, XZ_HALF, X_HALF_Z, Z),
|
||||
YPOS_LB(YZ, X_HALF_YZ, XZ_HALF_Y, Z_HALF_Y), YPOS_RB(X_HALF_YZ, XYZ, Z_HALF_XY, XZ_HALF_Y), YPOS_RT(XZ_HALF_Y, Z_HALF_XY, XY, X_HALF_Y), YPOS_LT(Z_HALF_Y, XZ_HALF_Y, X_HALF_Y, Y);
|
||||
private Vert xmin, xmax, ymin, ymax;
|
||||
|
||||
SubSide(Vert xmin, Vert ymin, Vert ymax, Vert xmax) {
|
||||
@@ -118,18 +116,20 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
double[] vCache = new double[4];
|
||||
int[] lightingCache = new int[4];
|
||||
float[] redCache = new float[4];
|
||||
float[] greenCache = new float[4];
|
||||
float[] blueCache = new float[4];
|
||||
float[] grnCache = new float[4];
|
||||
float[] bluCache = new float[4];
|
||||
TextureSubmap submap;
|
||||
TextureSubmap submapSmall;
|
||||
RenderBlocks rendererOld;
|
||||
|
||||
int[][] lightmap = new int[3][3];
|
||||
int[][] lightmap = new int[3][3];
|
||||
float[][] redmap = new float[3][3];
|
||||
float[][] grnmap = new float[3][3];
|
||||
float[][] blumap = new float[3][3];
|
||||
|
||||
int bx, by, bz;
|
||||
|
||||
@Override
|
||||
public boolean renderStandardBlock(Block block, int x, int y, int z) {
|
||||
@Override public boolean renderStandardBlock(Block block, int x, int y, int z) {
|
||||
bx = x;
|
||||
by = y;
|
||||
bz = z;
|
||||
@@ -146,42 +146,70 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
return res;
|
||||
}
|
||||
|
||||
/* This method fills a 3x3 grid of light values based on the four corners, by averaging them together.
|
||||
*
|
||||
* 2 TL x TR
|
||||
*
|
||||
* 1 x x x
|
||||
*
|
||||
* 0 BL x BR
|
||||
* 0 1 2
|
||||
*
|
||||
* Note: Variable names mean nothing... don't touch
|
||||
*
|
||||
* ._.
|
||||
*
|
||||
* shakes fist in anger
|
||||
*/
|
||||
void fillLightmap(int bottomLeft, int bottomRight, int topRight, int topLeft) {
|
||||
lightmap[0][0] = bottomLeft;
|
||||
lightmap[2][0] = bottomRight;
|
||||
lightmap[2][2] = topRight;
|
||||
lightmap[0][2] = topLeft;
|
||||
|
||||
/* This method fills a 3x3 grid of light values based on the four corners, by averaging them together.
|
||||
*
|
||||
* 2 TL x TR
|
||||
*
|
||||
* 1 x x x
|
||||
*
|
||||
* 0 BL x BR
|
||||
* 0 1 2
|
||||
*
|
||||
* Note: Variable names mean nothing... don't touch
|
||||
*
|
||||
* ._.
|
||||
*
|
||||
* shakes fist in anger
|
||||
*/
|
||||
void fillLightmap(int bottomLeft, int bottomRight, int topRight, int topLeft) {
|
||||
lightmap[0][0] = bottomLeft;
|
||||
lightmap[2][0] = bottomRight;
|
||||
lightmap[2][2] = topRight;
|
||||
lightmap[0][2] = topLeft;
|
||||
lightmap[1][0] = avg(bottomLeft, bottomRight);
|
||||
lightmap[2][1] = avg(bottomRight, topRight);
|
||||
lightmap[1][2] = avg(topRight, topLeft);
|
||||
lightmap[0][1] = avg(topLeft, bottomLeft);
|
||||
|
||||
lightmap[1][0] = avg(bottomLeft, bottomRight);
|
||||
lightmap[2][1] = avg(bottomRight, topRight);
|
||||
lightmap[1][2] = avg(topRight, topLeft);
|
||||
lightmap[0][1] = avg(topLeft, bottomLeft);
|
||||
lightmap[1][1] = avg(bottomLeft, bottomRight, topRight, topLeft);
|
||||
}
|
||||
|
||||
lightmap[1][1] = avg(bottomLeft, bottomRight, topRight, topLeft);
|
||||
}
|
||||
void fillColormap(float bottomLeft, float bottomRight, float topRight, float topLeft, float[][] map) {
|
||||
map[0][0] = bottomLeft;
|
||||
map[2][0] = bottomRight;
|
||||
map[2][2] = topRight;
|
||||
map[0][2] = topLeft;
|
||||
|
||||
void getLight(int x, int y) {
|
||||
lightingCache[0] = lightmap[0+x][0+y];
|
||||
lightingCache[1] = lightmap[1+x][0+y];
|
||||
lightingCache[2] = lightmap[1+x][1+y];
|
||||
lightingCache[3] = lightmap[0+x][1+y];
|
||||
}
|
||||
map[1][0] = (bottomLeft + bottomRight) / 2.0F;
|
||||
map[2][1] = (bottomRight + topRight) / 2.0F;
|
||||
map[1][2] = (topRight + topLeft) / 2.0F;
|
||||
map[0][1] = (topLeft + bottomLeft) / 2.0F;
|
||||
|
||||
map[1][1] = (bottomLeft + bottomRight + topRight + topLeft) / 4.0F;
|
||||
}
|
||||
|
||||
void getLight(int x, int y) {
|
||||
lightingCache[0] = lightmap[0 + x][0 + y];
|
||||
lightingCache[1] = lightmap[1 + x][0 + y];
|
||||
lightingCache[2] = lightmap[1 + x][1 + y];
|
||||
lightingCache[3] = lightmap[0 + x][1 + y];
|
||||
|
||||
redCache[0] = redmap[0 + x][0 + y];
|
||||
redCache[1] = redmap[1 + x][0 + y];
|
||||
redCache[2] = redmap[1 + x][1 + y];
|
||||
redCache[3] = redmap[0 + x][1 + y];
|
||||
|
||||
grnCache[0] = grnmap[0 + x][0 + y];
|
||||
grnCache[1] = grnmap[1 + x][0 + y];
|
||||
grnCache[2] = grnmap[1 + x][1 + y];
|
||||
grnCache[3] = grnmap[0 + x][1 + y];
|
||||
|
||||
bluCache[0] = blumap[0 + x][0 + y];
|
||||
bluCache[1] = blumap[1 + x][0 + y];
|
||||
bluCache[2] = blumap[1 + x][1 + y];
|
||||
bluCache[3] = blumap[0 + x][1 + y];
|
||||
}
|
||||
|
||||
/**
|
||||
* This works around a bug in CLC atm
|
||||
@@ -201,8 +229,8 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
sunlightBitChannel += (light & 0xF00000);
|
||||
}
|
||||
|
||||
return ((blockLightBitChannel / lightVals.length) & 0xFF) | ((redBitChannel / lightVals.length) & 0xF00) | ((greenBitChannel / lightVals.length) & 0xF000)
|
||||
| ((blueBitChannel / lightVals.length) & 0xF0000) | ((sunlightBitChannel / lightVals.length) & 0xF00000);
|
||||
return ((blockLightBitChannel / lightVals.length) & 0xFF) | ((redBitChannel / lightVals.length) & 0xF00) | ((greenBitChannel / lightVals.length) & 0xF000) | (
|
||||
(blueBitChannel / lightVals.length) & 0xF0000) | ((sunlightBitChannel / lightVals.length) & 0xF00000);
|
||||
}
|
||||
|
||||
void side(SubSide side, int iconIndex) {
|
||||
@@ -226,8 +254,7 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
side.render(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderFaceXNeg(Block block, double x, double y, double z, IIcon icon) {
|
||||
@Override public void renderFaceXNeg(Block block, double x, double y, double z, IIcon icon) {
|
||||
if (rendererOld != null && rendererOld.hasOverrideBlockTexture()) {
|
||||
IIcon i = rendererOld.overrideBlockTexture;
|
||||
|
||||
@@ -238,20 +265,23 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
} else {
|
||||
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 4);
|
||||
|
||||
fillLightmap(brightnessBottomRight, brightnessTopRight, brightnessTopLeft, brightnessBottomLeft);
|
||||
getLight(0, 0);
|
||||
fillLightmap(brightnessBottomRight, brightnessTopRight, brightnessTopLeft, brightnessBottomLeft);
|
||||
fillColormap(colorRedBottomRight, colorRedTopRight, colorRedTopLeft, colorRedBottomLeft, redmap);
|
||||
fillColormap(colorGreenBottomRight, colorGreenTopRight, colorGreenTopLeft, colorGreenBottomLeft, grnmap);
|
||||
fillColormap(colorBlueBottomRight, colorBlueTopRight, colorBlueTopLeft, colorBlueBottomLeft, blumap);
|
||||
|
||||
getLight(0, 0);
|
||||
side(XNEG_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
getLight(1, 0);
|
||||
side(XNEG_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
getLight(1, 1);
|
||||
side(XNEG_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
getLight(0, 1);
|
||||
side(XNEG_LT, tex[3]);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderFaceXPos(Block block, double x, double y, double z, IIcon icon) {
|
||||
@Override public void renderFaceXPos(Block block, double x, double y, double z, IIcon icon) {
|
||||
if (rendererOld != null && rendererOld.hasOverrideBlockTexture()) {
|
||||
IIcon i = rendererOld.overrideBlockTexture;
|
||||
|
||||
@@ -262,20 +292,22 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
} else {
|
||||
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 5);
|
||||
|
||||
fillLightmap(brightnessTopLeft, brightnessBottomLeft, brightnessBottomRight, brightnessTopRight);
|
||||
getLight(0, 0);
|
||||
side(XPOS_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
side(XPOS_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
side(XPOS_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
side(XPOS_LT, tex[3]);
|
||||
fillLightmap(brightnessTopLeft, brightnessBottomLeft, brightnessBottomRight, brightnessTopRight);
|
||||
fillColormap(colorRedTopLeft, colorRedBottomLeft, colorRedBottomRight, colorRedTopRight, redmap);
|
||||
fillColormap(colorGreenTopLeft, colorGreenBottomLeft, colorGreenBottomRight, colorGreenTopRight, grnmap);
|
||||
fillColormap(colorBlueTopLeft, colorBlueBottomLeft, colorBlueBottomRight, colorBlueTopRight, blumap);
|
||||
getLight(0, 0);
|
||||
side(XPOS_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
side(XPOS_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
side(XPOS_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
side(XPOS_LT, tex[3]);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderFaceZNeg(Block block, double x, double y, double z, IIcon icon) {
|
||||
@Override public void renderFaceZNeg(Block block, double x, double y, double z, IIcon icon) {
|
||||
if (rendererOld != null && rendererOld.hasOverrideBlockTexture()) {
|
||||
IIcon i = rendererOld.overrideBlockTexture;
|
||||
|
||||
@@ -286,20 +318,22 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
} else {
|
||||
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 2);
|
||||
|
||||
fillLightmap(brightnessBottomRight, brightnessTopRight, brightnessTopLeft, brightnessBottomLeft);
|
||||
getLight(0, 0);
|
||||
side(ZNEG_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
side(ZNEG_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
side(ZNEG_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
side(ZNEG_LT, tex[3]);
|
||||
fillLightmap(brightnessBottomRight, brightnessTopRight, brightnessTopLeft, brightnessBottomLeft);
|
||||
fillColormap(colorRedBottomRight, colorRedTopRight, colorRedTopLeft, colorRedBottomLeft, redmap);
|
||||
fillColormap(colorGreenBottomRight, colorGreenTopRight, colorGreenTopLeft, colorGreenBottomLeft, grnmap);
|
||||
fillColormap(colorBlueBottomRight, colorBlueTopRight, colorBlueTopLeft, colorBlueBottomLeft, blumap);
|
||||
getLight(0, 0);
|
||||
side(ZNEG_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
side(ZNEG_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
side(ZNEG_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
side(ZNEG_LT, tex[3]);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderFaceZPos(Block block, double x, double y, double z, IIcon icon) {
|
||||
@Override public void renderFaceZPos(Block block, double x, double y, double z, IIcon icon) {
|
||||
if (rendererOld != null && rendererOld.hasOverrideBlockTexture()) {
|
||||
IIcon i = rendererOld.overrideBlockTexture;
|
||||
|
||||
@@ -310,20 +344,22 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
} else {
|
||||
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 3);
|
||||
|
||||
fillLightmap(brightnessBottomLeft, brightnessBottomRight, brightnessTopRight, brightnessTopLeft);
|
||||
getLight(0, 0);
|
||||
side(ZPOS_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
side(ZPOS_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
side(ZPOS_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
side(ZPOS_LT, tex[3]);
|
||||
fillLightmap(brightnessBottomLeft, brightnessBottomRight, brightnessTopRight, brightnessTopLeft);
|
||||
fillColormap(colorRedBottomLeft, colorRedBottomRight, colorRedTopRight, colorRedTopLeft, redmap);
|
||||
fillColormap(colorGreenBottomLeft, colorGreenBottomRight, colorGreenTopRight, colorGreenTopLeft, grnmap);
|
||||
fillColormap(colorBlueBottomLeft, colorBlueBottomRight, colorBlueTopRight, colorBlueTopLeft, blumap);
|
||||
getLight(0, 0);
|
||||
side(ZPOS_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
side(ZPOS_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
side(ZPOS_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
side(ZPOS_LT, tex[3]);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderFaceYNeg(Block block, double x, double y, double z, IIcon icon) {
|
||||
@Override public void renderFaceYNeg(Block block, double x, double y, double z, IIcon icon) {
|
||||
if (rendererOld != null && rendererOld.hasOverrideBlockTexture()) {
|
||||
IIcon i = rendererOld.overrideBlockTexture;
|
||||
|
||||
@@ -332,22 +368,24 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
tessellator.addVertexWithUV(1.0, 0.0, 0.0, i.getMaxU(), i.getMinV());
|
||||
tessellator.addVertexWithUV(1.0, 0.0, 1.0, i.getMaxU(), i.getMaxV());
|
||||
} else {
|
||||
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 1);
|
||||
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 0);
|
||||
|
||||
fillLightmap(brightnessBottomLeft, brightnessBottomRight, brightnessTopRight, brightnessTopLeft);
|
||||
getLight(0, 0);
|
||||
side(YNEG_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
side(YNEG_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
side(YNEG_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
side(YNEG_LT, tex[3]);
|
||||
fillLightmap(brightnessBottomLeft, brightnessBottomRight, brightnessTopRight, brightnessTopLeft);
|
||||
fillColormap(colorRedBottomLeft, colorRedBottomRight, colorRedTopRight, colorRedTopLeft, redmap);
|
||||
fillColormap(colorGreenBottomLeft, colorGreenBottomRight, colorGreenTopRight, colorGreenTopLeft, grnmap);
|
||||
fillColormap(colorBlueBottomLeft, colorBlueBottomRight, colorBlueTopRight, colorBlueTopLeft, blumap);
|
||||
getLight(0, 0);
|
||||
side(YNEG_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
side(YNEG_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
side(YNEG_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
side(YNEG_LT, tex[3]);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderFaceYPos(Block block, double x, double y, double z, IIcon icon) {
|
||||
@Override public void renderFaceYPos(Block block, double x, double y, double z, IIcon icon) {
|
||||
if (rendererOld != null && rendererOld.hasOverrideBlockTexture()) {
|
||||
IIcon i = rendererOld.overrideBlockTexture;
|
||||
|
||||
@@ -356,18 +394,20 @@ public class RenderBlocksCTM extends RenderBlocks {
|
||||
tessellator.addVertexWithUV(1.0, 1.0, 1.0, i.getMaxU(), i.getMaxV());
|
||||
tessellator.addVertexWithUV(1.0, 1.0, 0.0, i.getMaxU(), i.getMinV());
|
||||
} else {
|
||||
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 0);
|
||||
int tex[] = CTM.getSubmapIndices(blockAccess, bx, by, bz, 1);
|
||||
|
||||
fillLightmap(brightnessTopRight, brightnessTopLeft, brightnessBottomLeft, brightnessBottomRight);
|
||||
getLight(0, 0);
|
||||
side(YPOS_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
side(YPOS_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
side(YPOS_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
side(YPOS_LT, tex[3]);
|
||||
fillLightmap(brightnessTopRight, brightnessTopLeft, brightnessBottomLeft, brightnessBottomRight);
|
||||
fillColormap(colorRedTopRight, colorRedTopLeft, colorRedBottomLeft, colorRedBottomRight, redmap);
|
||||
fillColormap(colorGreenTopRight, colorGreenTopLeft, colorGreenBottomLeft, colorGreenBottomRight, grnmap);
|
||||
fillColormap(colorBlueTopRight, colorBlueTopLeft, colorBlueBottomLeft, colorBlueBottomRight, blumap);
|
||||
getLight(0, 0);
|
||||
side(YPOS_LB, tex[0]);
|
||||
getLight(1, 0);
|
||||
side(YPOS_RB, tex[1]);
|
||||
getLight(1, 1);
|
||||
side(YPOS_RT, tex[2]);
|
||||
getLight(0, 1);
|
||||
side(YPOS_LT, tex[3]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -33,23 +33,26 @@ public class Configurations {
|
||||
public static int particlesTickrate;
|
||||
public static boolean oldPillars;
|
||||
public static boolean disableCTM;
|
||||
public static boolean connectInsideCTM;
|
||||
public static boolean fancy;
|
||||
public static boolean blockDescriptions;
|
||||
|
||||
public static boolean allowChiselDamage;
|
||||
public static int ironChiselMaxDamage;
|
||||
public static int diamondChiselMaxDamage;
|
||||
public static int obsidianChiselMaxDamage;
|
||||
public static boolean ironChiselCanLeftClick;
|
||||
public static boolean ironChiselHasModes;
|
||||
public static int ironChiselAttackDamage;
|
||||
public static int diamondChiselAttackDamage;
|
||||
public static int obsidianChiselAttackDamage;
|
||||
public static boolean allowChiselCrossColors;
|
||||
|
||||
public static boolean useRoadLineTool;
|
||||
public static String getRoadLineTool;
|
||||
public static int roadLineToolLevel;
|
||||
|
||||
public static int[] configColors = new int[ItemDye.field_150923_a.length];
|
||||
public static int[] configColors = new int[ItemDye.field_150923_a.length];
|
||||
|
||||
public static boolean refreshConfig() {
|
||||
|
||||
@@ -82,6 +85,7 @@ public class Configurations {
|
||||
particlesTickrate = config.get(category, "particleTickrate", 1, "Particle tick rate. Greater value = less particles.").getInt(1);
|
||||
oldPillars = config.get(category, "pillarOldGraphics", false, "Use old pillar textures").getBoolean(false);
|
||||
disableCTM = !config.get(category, "connectedTextures", true, "Enable connected textures").getBoolean(true);
|
||||
connectInsideCTM = !config.get(category, "connectInsideCTM", false, "Choose whether the inside corner is disconnected on a CTM block - http://imgur.com/eUywLZ4").getBoolean(false);
|
||||
fancy = config.get(category, "fancyLeaves", true, "Enable fancy textures").getBoolean(true);
|
||||
blockDescriptions = config.get(category, "tooltipsUseBlockDescriptions", true, "Make variations of blocks have the same name, and use the description in tooltip to distinguish them.")
|
||||
.getBoolean(true);
|
||||
@@ -89,14 +93,18 @@ public class Configurations {
|
||||
/* chisel */
|
||||
category = "chisel";
|
||||
allowChiselDamage = config.get(category, "allowChiselDamage", true, "Should the chisel be damageable and take damage when it chisels something.").getBoolean();
|
||||
ironChiselMaxDamage = config.get(category, "ironChiselMaxDamage", 500, "The max damage of the standard iron chisel. Default: 500.").getInt();
|
||||
diamondChiselMaxDamage = config.get(category, "diamondChiselMaxDamage", 5000, "The max damage of the diamond chisel. Default: 5000").getInt();
|
||||
ironChiselMaxDamage = config.getInt("ironChiselMaxDamage", category, 500, 1, Short.MAX_VALUE, "The max damage of the standard iron chisel.");
|
||||
diamondChiselMaxDamage = config.getInt("diamondChiselMaxDamage", category, 5000, 1, Short.MAX_VALUE, "The max damage of the diamond chisel.");
|
||||
obsidianChiselMaxDamage = config.getInt("obsidianChiselMaxDamage", category, 2500, 1, Short.MAX_VALUE, "The max damage of the obsidian chisel.");
|
||||
ironChiselCanLeftClick = config.get(category, "ironChiselCanLeftClick", true, "If this is true, the iron chisel can left click chisel blocks. If false, it cannot.").getBoolean();
|
||||
ironChiselHasModes = config.get(category, "ironChiselHasModes", false, "If this is true, the iron chisel can change its chisel mode just as the diamond chisel can.").getBoolean();
|
||||
ironChiselAttackDamage = config.get(category, "ironChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the iron chisel inflicts when it is used to attack an entity.").getInt();
|
||||
diamondChiselAttackDamage = config.get(category, "diamondChiselAttackDamage", 2,
|
||||
"The extra attack damage points (in half hearts) that the diamond chisel inflicts when it is used to attack an entity.").getInt();
|
||||
allowChiselCrossColors = config.get(category, "allowChiselCrossColors", true, "Should someone be able to chisel something into a different color.").getBoolean();
|
||||
ironChiselAttackDamage = config.get(category, "ironChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the iron chisel inflicts when it is used to attack an entity.")
|
||||
.getInt();
|
||||
diamondChiselAttackDamage = config
|
||||
.get(category, "diamondChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the diamond chisel inflicts when it is used to attack an entity.").getInt();
|
||||
obsidianChiselAttackDamage = config
|
||||
.get(category, "obsidianChiselAttackDamage", 4, "The extra attack damage points (in half hearts) that the obsidian chisel inflicts when it is used to attack an entity.").getInt();
|
||||
|
||||
/* block */
|
||||
category = "block";
|
||||
@@ -107,19 +115,19 @@ public class Configurations {
|
||||
.getInt();
|
||||
|
||||
/* hexColors */
|
||||
category = "hexColors";
|
||||
category = "hexColors";
|
||||
|
||||
for(int i = 0; i < ItemDye.field_150923_a.length; i++) {
|
||||
// tterrag... don't kill me over this formatting.
|
||||
String temp = config.get(category, "hex" + ItemDye.field_150923_a[i], "#" + Integer.toHexString(ItemDye.field_150922_c[i]), Character.toUpperCase(ItemDye.field_150923_a[i].charAt(0)) + ItemDye.field_150923_a[i].substring(1) + " color for hex block overlay #RRGGBB").getString();
|
||||
// Or this
|
||||
try {
|
||||
configColors[i] = Integer.decode(temp);
|
||||
} catch (NumberFormatException e) {
|
||||
Chisel.logger.warn("Configuration error, " + temp + " was not recognized as a color. Using default: #" + Integer.toHexString(ItemDye.field_150922_c[i]));
|
||||
configColors[i] = ItemDye.field_150922_c[i];
|
||||
}
|
||||
}
|
||||
for(int i = 0; i < ItemDye.field_150923_a.length; i++) {
|
||||
// tterrag... don't kill me over this formatting.
|
||||
String temp = config.get(category, "hex" + ItemDye.field_150923_a[i], "#" + Integer.toHexString(ItemDye.field_150922_c[i]), Character.toUpperCase(ItemDye.field_150923_a[i].charAt(0)) + ItemDye.field_150923_a[i].substring(1) + " color for hex block overlay #RRGGBB").getString();
|
||||
// Or this
|
||||
try {
|
||||
configColors[i] = Integer.decode(temp);
|
||||
} catch (NumberFormatException e) {
|
||||
Chisel.logger.warn("Configuration error, " + temp + " was not recognized as a color. Using default: #" + Integer.toHexString(ItemDye.field_150922_c[i]));
|
||||
configColors[i] = ItemDye.field_150922_c[i];
|
||||
}
|
||||
}
|
||||
|
||||
if (config.hasChanged()) {
|
||||
config.save();
|
||||
@@ -131,7 +139,9 @@ public class Configurations {
|
||||
return config.get("features", featureName(feature), true).getBoolean(true) && refreshConfig();
|
||||
}
|
||||
|
||||
/** Makes the old camelCase names from the new CONSTANT_CASE names */
|
||||
/**
|
||||
* Makes the old camelCase names from the new CONSTANT_CASE names
|
||||
*/
|
||||
public static String featureName(Features feature) {
|
||||
String[] words = feature.name().toLowerCase(Locale.ENGLISH).split("_");
|
||||
if (words.length == 1) {
|
||||
@@ -149,4 +159,4 @@ public class Configurations {
|
||||
public static boolean featureEnabled(String feature) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user