Skip to content

Commit

Permalink
Set strings to variables, moved colour tint for grass to Metropolis
Browse files Browse the repository at this point in the history
  • Loading branch information
Fureniku committed Nov 17, 2023
1 parent 55bdb1d commit 0004cd4
Showing 1 changed file with 65 additions and 45 deletions.
110 changes: 65 additions & 45 deletions src/main/java/com/fureniku/roads/RegistrationRoads.java
@@ -1,12 +1,15 @@
package com.fureniku.roads;

import com.fureniku.metropolis.RegistrationBase;
import com.fureniku.metropolis.blocks.BlockSet;
import com.fureniku.metropolis.utils.CreativeTabSet;
import com.fureniku.roads.blocks.DecorativeBlock;
import com.fureniku.roads.blocks.RoadBlockSet;
import net.minecraft.client.renderer.BiomeColors;
import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.GrassColor;
import net.minecraft.world.level.block.Block;
import net.neoforged.bus.api.IEventBus;
Expand All @@ -15,57 +18,89 @@
import net.neoforged.neoforge.registries.RegistryObject;

import java.util.ArrayList;
import java.util.function.BiFunction;
import java.util.function.Supplier;
import java.util.stream.Stream;

public class RegistrationRoads extends RegistrationBase {

//region Blocknames
private final String ROAD_BLOCK_STANDARD = "road_block_standard";
private final String ROAD_BLOCK_CONCRETE_1 = "road_block_concrete_1";
private final String ROAD_BLOCK_CONCRETE_2 = "road_block_concrete_2";
private final String ROAD_BLOCK_FINE = "road_block_fine";
private final String ROAD_BLOCK_DARK = "road_block_dark";
private final String ROAD_BLOCK_PALE = "road_block_pale";
private final String ROAD_BLOCK_LIGHT = "road_block_light";
private final String ROAD_BLOCK_MUDDY = "road_block_muddy";
private final String ROAD_BLOCK_MUDDY_DRIED = "road_block_muddy_dried";
private final String ROAD_BLOCK_WHITE = "road_block_white";
private final String ROAD_BLOCK_YELLOW = "road_block_yellow";
private final String ROAD_BLOCK_RED = "road_block_red";
private final String ROAD_BLOCK_BLUE = "road_block_blue";
private final String ROAD_BLOCK_GREEN = "road_block_green";

private final String ROAD_BLOCK_GRASS = "grass_road";
private final String ROAD_BLOCK_STONE = "stone_road";
private final String ROAD_BLOCK_DIRT = "dirt_road";
private final String ROAD_BLOCK_GRAVEL = "gravel_road";
private final String ROAD_BLOCK_SAND = "sand_road";

private final String SIDEWALK_STANDARD = "sidewalk";
private final String SIDEWALK_CLEAN = "sidewalk_clean";
private final String SIDEWALK_DARK = "sidewalk_dark";
private final String SIDEWALK_TAN = "sidewalk_tan";

private final String CRUSHED_ROCK = "crushed_rock";
private final String CLINKER = "clinker";
private final String CEMENT = "cement";
private final String LIMESTONE = "limestone";
//endregion

//region Suppliers
private BiFunction<BlockAndTintGetter, BlockPos, Integer> _grassBlockCol = (tint, pos) ->
tint != null && pos != null ?
BiomeColors.getAverageGrassColor(tint, pos) :
GrassColor.getDefaultColor();
private Supplier<Integer> _grassItemCol = () -> GrassColor.getDefaultColor();
//endregion

private CreativeTabSet _roadTab;
private CreativeTabSet _generalTab;

private RoadBlockSet _grassBlockSet; //Edge case - needs colouring.

private ArrayList<RoadBlockSet> _roadBlockSets = new ArrayList<>();
private ArrayList<BlockSet> _roadBlockSets = new ArrayList<>();

public RegistrationRoads(String modid, IEventBus modEventBus) {
super(modid, modEventBus);
}

@Override
public void init(IEventBus modEventBus) {
_grassBlockSet = new RoadBlockSet("grass_road", new ResourceLocation("minecraft", "block/grass_block_top"));

_roadBlockSets.add(new RoadBlockSet("road_block_standard"));
_roadBlockSets.add(new RoadBlockSet("road_block_concrete_1"));
_roadBlockSets.add(new RoadBlockSet("road_block_concrete_2"));
_roadBlockSets.add(new RoadBlockSet("road_block_fine"));
_roadBlockSets.add(new RoadBlockSet("road_block_dark"));
_roadBlockSets.add(new RoadBlockSet("road_block_pale"));
_roadBlockSets.add(new RoadBlockSet("road_block_light"));
_roadBlockSets.add(new RoadBlockSet("road_block_muddy"));
_roadBlockSets.add(new RoadBlockSet("road_block_muddy_dried"));
_roadBlockSets.add(new RoadBlockSet("road_block_white"));
_roadBlockSets.add(new RoadBlockSet("road_block_yellow"));
_roadBlockSets.add(new RoadBlockSet("road_block_red"));
_roadBlockSets.add(new RoadBlockSet("road_block_blue"));
_roadBlockSets.add(new RoadBlockSet("road_block_green"));

_roadBlockSets.add(_grassBlockSet);
_roadBlockSets.add(new RoadBlockSet("stone_road", new ResourceLocation("minecraft", "block/stone")));
_roadBlockSets.add(new RoadBlockSet("dirt_road", new ResourceLocation("minecraft", "block/dirt")));
_roadBlockSets.add(new RoadBlockSet("gravel_road", new ResourceLocation("minecraft", "block/gravel")));
_roadBlockSets.add(new RoadBlockSet("sand_road", new ResourceLocation("minecraft", "block/sand")));

_roadBlockSets.add(new RoadBlockSet("sidewalk"));
_roadBlockSets.add(new RoadBlockSet("sidewalk_clean"));
_roadBlockSets.add(new RoadBlockSet("sidewalk_dark"));
_roadBlockSets.add(new RoadBlockSet("sidewalk_tan"));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_STANDARD));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_CONCRETE_1));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_CONCRETE_2));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_FINE));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_DARK));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_PALE));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_LIGHT));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_MUDDY));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_MUDDY_DRIED));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_WHITE));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_YELLOW));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_RED));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_BLUE));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_GREEN));

_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_GRASS, new ResourceLocation("minecraft", "block/grass_block_top")).addColorTints(modEventBus, _grassBlockCol, _grassItemCol));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_STONE, new ResourceLocation("minecraft", "block/stone")));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_DIRT, new ResourceLocation("minecraft", "block/dirt")));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_GRAVEL, new ResourceLocation("minecraft", "block/gravel")));
_roadBlockSets.add(new RoadBlockSet(ROAD_BLOCK_SAND, new ResourceLocation("minecraft", "block/sand")));

_roadBlockSets.add(new RoadBlockSet(SIDEWALK_STANDARD));
_roadBlockSets.add(new RoadBlockSet(SIDEWALK_CLEAN));
_roadBlockSets.add(new RoadBlockSet(SIDEWALK_DARK));
_roadBlockSets.add(new RoadBlockSet(SIDEWALK_TAN));

registerBlockSet(CRUSHED_ROCK, DecorativeBlock::new);
registerBlockSet(CLINKER, DecorativeBlock::new);
Expand All @@ -74,9 +109,6 @@ public void init(IEventBus modEventBus) {

_roadTab = new CreativeTabSet(creativeTabs,"road_tab", _roadBlockSets.get(0).getRegistryItem(16));
_generalTab = new CreativeTabSet(creativeTabs,"general_tab", getItem(CRUSHED_ROCK));

modEventBus.addListener(this::registerBlockColors);
modEventBus.addListener(this::registerItemColors);
}

@Override
Expand Down Expand Up @@ -105,16 +137,4 @@ protected ArrayList<CreativeTabSet> getCreativeTabs() {
tabList.add(_generalTab);
return tabList;
}

@SubscribeEvent
public void registerBlockColors(RegisterColorHandlersEvent.Block event) {
event.register((state, tint, pos, tintIndex) -> tint != null && pos != null ? BiomeColors.getAverageGrassColor(tint, pos) : GrassColor.getDefaultColor(),
Stream.of(_grassBlockSet.getRegistryBlocks()).map(RegistryObject::get).toArray(Block[]::new));
}

@SubscribeEvent
public void registerItemColors(RegisterColorHandlersEvent.Item event) {
event.register((stack, tintIndex) -> GrassColor.getDefaultColor(),
Stream.of(_grassBlockSet.getRegistryItems()).map(RegistryObject::get).toArray(Item[]::new));
}
}

0 comments on commit 0004cd4

Please sign in to comment.