Tag switching (WIP)
This commit is contained in:
parent
0486d7d89c
commit
41df84404b
72 changed files with 303 additions and 628 deletions
|
@ -23,13 +23,13 @@ import net.minecraft.world.level.block.Rotation;
|
|||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
import net.minecraft.world.level.block.state.properties.Property;
|
||||
import ru.bclib.api.TagAPI;
|
||||
import ru.betterend.blocks.BlueVineBlock;
|
||||
import ru.betterend.blocks.basis.DoublePlantBlock;
|
||||
import ru.betterend.blocks.basis.FurBlock;
|
||||
import ru.betterend.blocks.basis.StalactiteBlock;
|
||||
import ru.betterend.blocks.basis.VineBlock;
|
||||
import ru.betterend.registry.EndBlocks;
|
||||
import ru.betterend.registry.EndTags;
|
||||
|
||||
public class BlocksHelper {
|
||||
public static final BooleanProperty ROOTS = BooleanProperty.create("roots");
|
||||
|
@ -346,7 +346,7 @@ public class BlocksHelper {
|
|||
}
|
||||
|
||||
public static boolean isEndNylium(Block block) {
|
||||
return block.is(BlockTags.NYLIUM) && block.is(EndTags.END_GROUND);
|
||||
return block.is(BlockTags.NYLIUM) && block.is(TagAPI.END_GROUND);
|
||||
}
|
||||
|
||||
public static boolean isEndNylium(BlockState state) {
|
||||
|
|
55
src/main/java/ru/betterend/util/BonemealPlants.java
Normal file
55
src/main/java/ru/betterend/util/BonemealPlants.java
Normal file
|
@ -0,0 +1,55 @@
|
|||
package ru.betterend.util;
|
||||
|
||||
import ru.bclib.api.BonemealAPI;
|
||||
import ru.betterend.registry.EndBlocks;
|
||||
|
||||
public class BonemealPlants {
|
||||
public static void init() {
|
||||
BonemealAPI.addLandGrass(EndBlocks.END_MOSS, EndBlocks.CREEPING_MOSS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.END_MOSS, EndBlocks.UMBRELLA_MOSS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.END_MYCELIUM, EndBlocks.CREEPING_MOSS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.END_MYCELIUM, EndBlocks.UMBRELLA_MOSS);
|
||||
|
||||
BonemealAPI.addLandGrass(EndBlocks.CAVE_MOSS, EndBlocks.CAVE_GRASS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.CHORUS_NYLIUM, EndBlocks.CHORUS_GRASS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.CRYSTAL_MOSS, EndBlocks.CRYSTAL_GRASS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.SHADOW_GRASS, EndBlocks.SHADOW_PLANT);
|
||||
BonemealAPI.addLandGrass(EndBlocks.PINK_MOSS, EndBlocks.BUSHY_GRASS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.AMBER_MOSS, EndBlocks.AMBER_GRASS);
|
||||
|
||||
BonemealAPI.addLandGrass(EndBlocks.JUNGLE_MOSS, EndBlocks.JUNGLE_GRASS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.JUNGLE_MOSS, EndBlocks.TWISTED_UMBRELLA_MOSS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.JUNGLE_MOSS, EndBlocks.SMALL_JELLYSHROOM, 0.1F);
|
||||
|
||||
// Wait for Lib changes
|
||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.BLOOMING_COOKSONIA);
|
||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.VAIOLUSH_FERN);
|
||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.FRACTURN);
|
||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.SALTEAGO);
|
||||
|
||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.CREEPING_MOSS, 0.1F);
|
||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.UMBRELLA_MOSS, 0.1F);
|
||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.TWISTED_UMBRELLA_MOSS, 0.1F);
|
||||
|
||||
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.ORANGO);
|
||||
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.AERIDIUM, 0.2F);
|
||||
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.LUTEBUS, 0.2F);
|
||||
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.LAMELLARIUM);
|
||||
|
||||
//BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS, EndBlocks.RUTISCUS, EndBlocks.AERIDIUM, 0.2F);
|
||||
//BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS, EndBlocks.RUTISCUS, EndBlocks.LAMELLARIUM);
|
||||
//BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS, EndBlocks.RUTISCUS, EndBlocks.BOLUX_MUSHROOM, 0.05F);
|
||||
|
||||
BonemealAPI.addLandGrass(EndBlocks.SANGNUM, EndBlocks.GLOBULAGUS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.SANGNUM, EndBlocks.CLAWFERN);
|
||||
BonemealAPI.addLandGrass(EndBlocks.SANGNUM, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
||||
|
||||
BonemealAPI.addLandGrass(EndBlocks.MOSSY_DRAGON_BONE, EndBlocks.GLOBULAGUS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.MOSSY_DRAGON_BONE, EndBlocks.CLAWFERN);
|
||||
BonemealAPI.addLandGrass(EndBlocks.MOSSY_DRAGON_BONE, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
||||
|
||||
BonemealAPI.addLandGrass(EndBlocks.MOSSY_OBSIDIAN, EndBlocks.GLOBULAGUS);
|
||||
BonemealAPI.addLandGrass(EndBlocks.MOSSY_OBSIDIAN, EndBlocks.CLAWFERN);
|
||||
BonemealAPI.addLandGrass(EndBlocks.MOSSY_OBSIDIAN, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
||||
}
|
||||
}
|
|
@ -1,152 +0,0 @@
|
|||
package ru.betterend.util;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import ru.betterend.registry.EndBiomes;
|
||||
import ru.betterend.registry.EndBlocks;
|
||||
import ru.betterend.world.biome.EndBiome;
|
||||
|
||||
public class BonemealUtil {
|
||||
private static final Map<ResourceLocation, Map<Block, GrassList>> GRASS_BIOMES = Maps.newHashMap();
|
||||
private static final Map<Block, GrassList> GRASS_TYPES = Maps.newHashMap();
|
||||
|
||||
public static void init() {
|
||||
addBonemealGrass(EndBlocks.END_MOSS, EndBlocks.CREEPING_MOSS);
|
||||
addBonemealGrass(EndBlocks.END_MOSS, EndBlocks.UMBRELLA_MOSS);
|
||||
addBonemealGrass(EndBlocks.END_MYCELIUM, EndBlocks.CREEPING_MOSS);
|
||||
addBonemealGrass(EndBlocks.END_MYCELIUM, EndBlocks.UMBRELLA_MOSS);
|
||||
|
||||
addBonemealGrass(EndBlocks.CAVE_MOSS, EndBlocks.CAVE_GRASS);
|
||||
addBonemealGrass(EndBlocks.CHORUS_NYLIUM, EndBlocks.CHORUS_GRASS);
|
||||
addBonemealGrass(EndBlocks.CRYSTAL_MOSS, EndBlocks.CRYSTAL_GRASS);
|
||||
addBonemealGrass(EndBlocks.SHADOW_GRASS, EndBlocks.SHADOW_PLANT);
|
||||
addBonemealGrass(EndBlocks.PINK_MOSS, EndBlocks.BUSHY_GRASS);
|
||||
addBonemealGrass(EndBlocks.AMBER_MOSS, EndBlocks.AMBER_GRASS);
|
||||
|
||||
addBonemealGrass(EndBlocks.JUNGLE_MOSS, EndBlocks.JUNGLE_GRASS);
|
||||
addBonemealGrass(EndBlocks.JUNGLE_MOSS, EndBlocks.TWISTED_UMBRELLA_MOSS);
|
||||
addBonemealGrass(EndBlocks.JUNGLE_MOSS, EndBlocks.SMALL_JELLYSHROOM, 0.1F);
|
||||
|
||||
addBonemealGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.BLOOMING_COOKSONIA);
|
||||
addBonemealGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.VAIOLUSH_FERN);
|
||||
addBonemealGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.FRACTURN);
|
||||
addBonemealGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.SALTEAGO);
|
||||
|
||||
addBonemealGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.CREEPING_MOSS, 0.1F);
|
||||
addBonemealGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.UMBRELLA_MOSS, 0.1F);
|
||||
addBonemealGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.TWISTED_UMBRELLA_MOSS, 0.1F);
|
||||
|
||||
addBonemealGrass(EndBlocks.RUTISCUS, EndBlocks.ORANGO);
|
||||
addBonemealGrass(EndBlocks.RUTISCUS, EndBlocks.AERIDIUM, 0.2F);
|
||||
addBonemealGrass(EndBlocks.RUTISCUS, EndBlocks.LUTEBUS, 0.2F);
|
||||
addBonemealGrass(EndBlocks.RUTISCUS, EndBlocks.LAMELLARIUM);
|
||||
|
||||
addBonemealGrass(EndBiomes.LANTERN_WOODS, EndBlocks.RUTISCUS, EndBlocks.AERIDIUM, 0.2F);
|
||||
addBonemealGrass(EndBiomes.LANTERN_WOODS, EndBlocks.RUTISCUS, EndBlocks.LAMELLARIUM);
|
||||
addBonemealGrass(EndBiomes.LANTERN_WOODS, EndBlocks.RUTISCUS, EndBlocks.BOLUX_MUSHROOM, 0.05F);
|
||||
|
||||
addBonemealGrass(EndBlocks.SANGNUM, EndBlocks.GLOBULAGUS);
|
||||
addBonemealGrass(EndBlocks.SANGNUM, EndBlocks.CLAWFERN);
|
||||
addBonemealGrass(EndBlocks.SANGNUM, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
||||
|
||||
addBonemealGrass(EndBlocks.MOSSY_DRAGON_BONE, EndBlocks.GLOBULAGUS);
|
||||
addBonemealGrass(EndBlocks.MOSSY_DRAGON_BONE, EndBlocks.CLAWFERN);
|
||||
addBonemealGrass(EndBlocks.MOSSY_DRAGON_BONE, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
||||
|
||||
addBonemealGrass(EndBlocks.MOSSY_OBSIDIAN, EndBlocks.GLOBULAGUS);
|
||||
addBonemealGrass(EndBlocks.MOSSY_OBSIDIAN, EndBlocks.CLAWFERN);
|
||||
addBonemealGrass(EndBlocks.MOSSY_OBSIDIAN, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
||||
}
|
||||
|
||||
public static void addBonemealGrass(Block terrain, Block plant) {
|
||||
addBonemealGrass(terrain, plant, 1F);
|
||||
}
|
||||
|
||||
public static void addBonemealGrass(Block terrain, Block plant, float chance) {
|
||||
GrassList list = GRASS_TYPES.get(terrain);
|
||||
if (list == null) {
|
||||
list = new GrassList();
|
||||
GRASS_TYPES.put(terrain, list);
|
||||
}
|
||||
list.addGrass(plant, chance);
|
||||
}
|
||||
|
||||
public static void addBonemealGrass(EndBiome biome, Block terrain, Block plant) {
|
||||
addBonemealGrass(biome, terrain, plant, 1F);
|
||||
}
|
||||
|
||||
public static void addBonemealGrass(EndBiome biome, Block terrain, Block plant, float chance) {
|
||||
Map<Block, GrassList> map = GRASS_BIOMES.get(biome.getID());
|
||||
if (map == null) {
|
||||
map = Maps.newHashMap();
|
||||
GRASS_BIOMES.put(biome.getID(), map);
|
||||
}
|
||||
GrassList list = map.get(terrain);
|
||||
if (list == null) {
|
||||
list = new GrassList();
|
||||
map.put(terrain, list);
|
||||
}
|
||||
list.addGrass(plant, chance);
|
||||
}
|
||||
|
||||
public static Block getGrass(ResourceLocation biomeID, Block terrain, Random random) {
|
||||
Map<Block, GrassList> map = GRASS_BIOMES.get(biomeID);
|
||||
GrassList list = null;
|
||||
if (map != null) {
|
||||
list = map.get(terrain);
|
||||
if (list == null) {
|
||||
list = GRASS_TYPES.get(terrain);
|
||||
}
|
||||
}
|
||||
else {
|
||||
list = GRASS_TYPES.get(terrain);
|
||||
}
|
||||
return list == null ? null : list.getGrass(random);
|
||||
}
|
||||
|
||||
private static final class GrassInfo {
|
||||
final Block grass;
|
||||
float chance;
|
||||
|
||||
public GrassInfo(Block grass, float chance) {
|
||||
this.grass = grass;
|
||||
this.chance = chance;
|
||||
}
|
||||
|
||||
public float addChance(float chance) {
|
||||
this.chance += chance;
|
||||
return this.chance;
|
||||
}
|
||||
}
|
||||
|
||||
private static final class GrassList {
|
||||
final List<GrassInfo> list = Lists.newArrayList();
|
||||
float maxChance = 0;
|
||||
|
||||
public void addGrass(Block grass, float chance) {
|
||||
GrassInfo info = new GrassInfo(grass, chance);
|
||||
maxChance = info.addChance(maxChance);
|
||||
list.add(info);
|
||||
}
|
||||
|
||||
public Block getGrass(Random random) {
|
||||
if (maxChance == 0 || list.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
float chance = random.nextFloat() * maxChance;
|
||||
for (GrassInfo info: list) {
|
||||
if (chance <= info.chance) {
|
||||
return info.grass;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue