Skip to content

Commit b35e13e

Browse files
committed
Make all liquids tint-able through the blockColors.json
1 parent 0efd697 commit b35e13e

File tree

5 files changed

+32
-28
lines changed

5 files changed

+32
-28
lines changed

core/src/main/java/de/bluecolored/bluemap/core/map/hires/block/BlockStateModelRenderer.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public void render(BlockNeighborhood block, BlockState blockState, TileModelView
7171
// add water if block is waterlogged
7272
if (blockState.isWaterlogged() || block.getProperties().isAlwaysWaterlogged()) {
7373
waterloggedColor.set(0f, 0f, 0f, 0f, true);
74-
renderModel(block, WATERLOGGED_BLOCKSTATE, tileModel.initialize(), waterloggedColor);
74+
renderModel(block, BlockState.WATER, tileModel.initialize(), waterloggedColor);
7575
blockColor.set(waterloggedColor.overlay(blockColor.premultiplied()));
7676
}
7777

@@ -110,6 +110,4 @@ private void renderModel(BlockNeighborhood block, BlockState blockState, TileMod
110110
tileModel.initialize(modelStart);
111111
}
112112

113-
private final static BlockState WATERLOGGED_BLOCKSTATE = new BlockState(Key.minecraft("water"));
114-
115113
}

core/src/main/java/de/bluecolored/bluemap/core/map/hires/block/LiquidModelRenderer.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ public class LiquidModelRenderer implements BlockRenderer {
7171

7272
private BlockNeighborhood block;
7373
private BlockState blockState;
74-
private boolean isWaterlogged, isWaterLike;
7574
private Model modelResource;
7675
private TileModelView blockModel;
7776
private Color blockColor;
@@ -100,14 +99,16 @@ public LiquidModelRenderer(ResourcePack resourcePack, TextureGallery textureGall
10099
public void render(BlockNeighborhood block, Variant variant, TileModelView blockModel, Color color) {
101100
this.block = block;
102101
this.blockState = block.getBlockState();
103-
this.isWaterlogged = blockState.isWaterlogged() || block.getProperties().isAlwaysWaterlogged();
104-
this.isWaterLike = blockState.isWater() || isWaterlogged;
105102
this.modelResource = variant.getModel().getResource(modelProvider);
106103
this.blockModel = blockModel;
107104
this.blockColor = color;
108105

109106
if (this.modelResource == null) return;
110107

108+
// for waterlogged blocks, pretend it's just water
109+
if (blockState.isWaterlogged() || block.getProperties().isAlwaysWaterlogged())
110+
this.blockState = BlockState.WATER;
111+
111112
build();
112113
}
113114

@@ -145,8 +146,7 @@ private void build() {
145146
int stillTextureId = textureGallery.get(stillTexturePath);
146147
int flowTextureId = textureGallery.get(flowTexturePath);
147148

148-
tintcolor.set(1f, 1f, 1f, 1f, true);
149-
if (isWaterLike) blockColorCalculator.getBlendedWaterColor(block, tintcolor);
149+
blockColorCalculator.getBlockColor(block, blockState, tintcolor);
150150

151151
int modelStart = blockModel.getStart();
152152

@@ -231,13 +231,10 @@ private boolean isLiquidBlockingBlock(BlockState blockState){
231231
private boolean isSameLiquid(ExtendedBlock block){
232232
BlockState blockState = block.getBlockState();
233233

234-
if (this.isWaterlogged)
234+
if (this.blockState.isWater())
235235
return blockState.isWater() || blockState.isWaterlogged() || block.getProperties().isAlwaysWaterlogged();
236236

237-
if (blockState.getId().equals(this.blockState.getId()))
238-
return true;
239-
240-
return this.isWaterLike && (blockState.isWaterlogged() || block.getProperties().isAlwaysWaterlogged());
237+
return blockState.getId().equals(this.blockState.getId());
241238
}
242239

243240
private float getLiquidBaseHeight(BlockState block){

core/src/main/java/de/bluecolored/bluemap/core/resources/BlockColorCalculatorFactory.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.flowpowered.math.GenericMath;
2828
import com.google.gson.stream.JsonReader;
2929
import de.bluecolored.bluemap.core.util.math.Color;
30+
import de.bluecolored.bluemap.core.world.BlockState;
3031
import de.bluecolored.bluemap.core.world.biome.Biome;
3132
import de.bluecolored.bluemap.core.world.block.BlockAccess;
3233
import de.bluecolored.bluemap.core.world.block.BlockNeighborhood;
@@ -134,7 +135,12 @@ public class BlockColorCalculator {
134135

135136
@SuppressWarnings("UnusedReturnValue")
136137
public Color getBlockColor(BlockNeighborhood block, Color target) {
137-
String blockId = block.getBlockState().getId().getFormatted();
138+
return getBlockColor(block, block.getBlockState(), target);
139+
}
140+
141+
@SuppressWarnings("UnusedReturnValue")
142+
public Color getBlockColor(BlockNeighborhood block, BlockState blockState, Color target) {
143+
String blockId = blockState.getId().getFormatted();
138144

139145
ColorFunction colorFunction = blockColorMap.get(blockId);
140146
if (colorFunction == null) colorFunction = blockColorMap.get("default");

core/src/main/java/de/bluecolored/bluemap/core/world/BlockState.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public class BlockState {
5252

5353
public static final BlockState AIR = new BlockState(AIR_ID);
5454
public static final BlockState MISSING = new BlockState(MISSING_ID);
55+
public static final BlockState WATER = new BlockState(WATER_ID);
5556

5657
private boolean hashed;
5758
private int hash;

core/src/main/resourceExtensions/assets/minecraft/blockColors.json

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,29 @@
11
{
2-
"default": "@foliage",
2+
"default": "#ffffff",
33
"minecraft:water": "@water",
4-
"minecraft:cauldron": "@water",
54
"minecraft:water_cauldron": "@water",
6-
"minecraft:powder_snow_cauldron": "#ffffff",
7-
"minecraft:lava_cauldron": "#ffffff",
5+
"minecraft:redstone_wire": "@redstone",
6+
"minecraft:oak_leaves": "@foliage",
7+
"minecraft:jungle_leaves": "@foliage",
8+
"minecraft:acacia_leaves": "@foliage",
9+
"minecraft:dark_oak_leaves": "@foliage",
10+
"minecraft:mangrove_leaves": "@foliage",
11+
"minecraft:birch_leaves": 8431445,
12+
"minecraft:spruce_leaves": 6396257,
13+
"minecraft:vine": "@foliage",
814
"minecraft:grass_block": "@grass",
915
"minecraft:grass": "@grass",
1016
"minecraft:short_grass": "@grass",
1117
"minecraft:tall_grass": "@grass",
1218
"minecraft:fern": "@grass",
1319
"minecraft:large_fern": "@grass",
20+
"minecraft:potted_fern": "@grass",
1421
"minecraft:bamboo": "@grass",
1522
"minecraft:sugar_cane": "@grass",
16-
"minecraft:redstone_wire": "@redstone",
17-
"minecraft:birch_leaves": 8431445,
18-
"minecraft:spruce_leaves": 6396257,
19-
"minecraft:stonecutter": "#ffffff",
20-
"minecraft:snow": "#ffffff",
21-
"minecraft:cherry_leaves": "#ffffff",
23+
"minecraft:pink_petals": "@grass",
24+
"minecraft:bush": "@grass",
25+
"minecraft:wildflowers": "@grass",
26+
"minecraft:leaf_litter": "@dry_foliage",
2227
"minecraft:white_banner": "#f9fffe",
2328
"minecraft:light_gray_banner": "#9d9d97",
2429
"minecraft:gray_banner": "#474f52",
@@ -66,8 +71,5 @@
6671
"minecraft:blue_shulker_box": "#3c44aa",
6772
"minecraft:purple_shulker_box": "#8932b8",
6873
"minecraft:magenta_shulker_box": "#c74ebd",
69-
"minecraft:pink_shulker_box": "#f38baa",
70-
"minecraft:pale_oak_leaves": "#ffffff",
71-
"minecraft:leaf_litter": "@dry_foliage",
72-
"minecraft:bush": "@grass"
74+
"minecraft:pink_shulker_box": "#f38baa"
7375
}

0 commit comments

Comments
 (0)