Bonemeal fixes
This commit is contained in:
parent
9b1776879b
commit
d435a0fc10
4 changed files with 36 additions and 127 deletions
|
@ -25,7 +25,6 @@ import ru.betterend.registry.EndSounds;
|
||||||
import ru.betterend.registry.EndStructures;
|
import ru.betterend.registry.EndStructures;
|
||||||
import ru.betterend.registry.EndTags;
|
import ru.betterend.registry.EndTags;
|
||||||
import ru.betterend.util.BonemealPlants;
|
import ru.betterend.util.BonemealPlants;
|
||||||
import ru.betterend.util.DataFixerUtil;
|
|
||||||
import ru.betterend.util.LootTableUtil;
|
import ru.betterend.util.LootTableUtil;
|
||||||
import ru.betterend.world.generator.BetterEndBiomeSource;
|
import ru.betterend.world.generator.BetterEndBiomeSource;
|
||||||
import ru.betterend.world.generator.GeneratorOptions;
|
import ru.betterend.world.generator.GeneratorOptions;
|
||||||
|
@ -58,7 +57,6 @@ public class BetterEnd implements ModInitializer {
|
||||||
EndStructures.register();
|
EndStructures.register();
|
||||||
BonemealPlants.init();
|
BonemealPlants.init();
|
||||||
GeneratorOptions.init();
|
GeneratorOptions.init();
|
||||||
DataFixerUtil.init();
|
|
||||||
LootTableUtil.init();
|
LootTableUtil.init();
|
||||||
FabricLoader.getInstance().getEntrypoints("betterend", BetterEndPlugin.class).forEach(BetterEndPlugin::register);
|
FabricLoader.getInstance().getEntrypoints("betterend", BetterEndPlugin.class).forEach(BetterEndPlugin::register);
|
||||||
Integrations.init();
|
Integrations.init();
|
||||||
|
|
|
@ -23,6 +23,7 @@ import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.LeavesBlock;
|
import net.minecraft.world.level.block.LeavesBlock;
|
||||||
import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderConfiguration;
|
import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderConfiguration;
|
||||||
import net.minecraft.world.level.material.Material;
|
import net.minecraft.world.level.material.Material;
|
||||||
|
import ru.bclib.api.BonemealAPI;
|
||||||
import ru.bclib.api.TagAPI;
|
import ru.bclib.api.TagAPI;
|
||||||
import ru.bclib.blocks.BaseVineBlock;
|
import ru.bclib.blocks.BaseVineBlock;
|
||||||
import ru.bclib.blocks.SimpleLeavesBlock;
|
import ru.bclib.blocks.SimpleLeavesBlock;
|
||||||
|
@ -85,6 +86,7 @@ public class EndTags {
|
||||||
if (block instanceof EndTerrainBlock) {
|
if (block instanceof EndTerrainBlock) {
|
||||||
TagAPI.addEndGround(block);
|
TagAPI.addEndGround(block);
|
||||||
TagHelper.addTag(BlockTags.NYLIUM, block);
|
TagHelper.addTag(BlockTags.NYLIUM, block);
|
||||||
|
BonemealAPI.addSpreadableBlock(block);
|
||||||
}
|
}
|
||||||
else if (block instanceof LeavesBlock || block instanceof SimpleLeavesBlock) {
|
else if (block instanceof LeavesBlock || block instanceof SimpleLeavesBlock) {
|
||||||
TagHelper.addTag(BlockTags.LEAVES, block);
|
TagHelper.addTag(BlockTags.LEAVES, block);
|
||||||
|
@ -102,6 +104,7 @@ public class EndTags {
|
||||||
ComposterBlockAccessor.callAdd(0.1F, block);
|
ComposterBlockAccessor.callAdd(0.1F, block);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
BonemealAPI.addSpreadableBlock(EndBlocks.CAVE_MOSS);
|
||||||
|
|
||||||
List<Item> hammers = Lists.newArrayList();
|
List<Item> hammers = Lists.newArrayList();
|
||||||
EndItems.getModItems(BetterEnd.MOD_ID).forEach(item -> {
|
EndItems.getModItems(BetterEnd.MOD_ID).forEach(item -> {
|
||||||
|
|
|
@ -1,55 +1,57 @@
|
||||||
package ru.betterend.util;
|
package ru.betterend.util;
|
||||||
|
|
||||||
import ru.bclib.api.BonemealAPI;
|
import ru.bclib.api.BonemealAPI;
|
||||||
|
import ru.betterend.registry.EndBiomes;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
|
|
||||||
public class BonemealPlants {
|
public class BonemealPlants {
|
||||||
public static void init() {
|
public static void init() {
|
||||||
BonemealAPI.addLandGrass(EndBlocks.END_MOSS, EndBlocks.CREEPING_MOSS);
|
BonemealAPI.addLandGrass(EndBlocks.CREEPING_MOSS, EndBlocks.END_MOSS);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.END_MOSS, EndBlocks.UMBRELLA_MOSS);
|
BonemealAPI.addLandGrass(EndBlocks.UMBRELLA_MOSS, EndBlocks.END_MOSS);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.END_MYCELIUM, EndBlocks.CREEPING_MOSS);
|
BonemealAPI.addLandGrass(EndBlocks.CREEPING_MOSS, EndBlocks.END_MYCELIUM);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.END_MYCELIUM, EndBlocks.UMBRELLA_MOSS);
|
BonemealAPI.addLandGrass(EndBlocks.UMBRELLA_MOSS, EndBlocks.END_MYCELIUM);
|
||||||
|
|
||||||
BonemealAPI.addLandGrass(EndBlocks.CAVE_MOSS, EndBlocks.CAVE_GRASS);
|
BonemealAPI.addLandGrass(EndBlocks.CAVE_GRASS, EndBlocks.CAVE_MOSS);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.CHORUS_NYLIUM, EndBlocks.CHORUS_GRASS);
|
BonemealAPI.addLandGrass(EndBlocks.CHORUS_GRASS, EndBlocks.CHORUS_NYLIUM);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.CRYSTAL_MOSS, EndBlocks.CRYSTAL_GRASS);
|
BonemealAPI.addLandGrass(EndBlocks.CRYSTAL_GRASS, EndBlocks.CRYSTAL_MOSS);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.SHADOW_GRASS, EndBlocks.SHADOW_PLANT);
|
BonemealAPI.addLandGrass(EndBlocks.SHADOW_PLANT, EndBlocks.SHADOW_GRASS);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.PINK_MOSS, EndBlocks.BUSHY_GRASS);
|
BonemealAPI.addLandGrass(EndBlocks.BUSHY_GRASS, EndBlocks.PINK_MOSS);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.AMBER_MOSS, EndBlocks.AMBER_GRASS);
|
BonemealAPI.addLandGrass(EndBlocks.AMBER_GRASS, EndBlocks.AMBER_MOSS);
|
||||||
|
|
||||||
BonemealAPI.addLandGrass(EndBlocks.JUNGLE_MOSS, EndBlocks.JUNGLE_GRASS);
|
BonemealAPI.addLandGrass(EndBlocks.JUNGLE_GRASS, EndBlocks.JUNGLE_MOSS);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.JUNGLE_MOSS, EndBlocks.TWISTED_UMBRELLA_MOSS);
|
BonemealAPI.addLandGrass(EndBlocks.TWISTED_UMBRELLA_MOSS, EndBlocks.JUNGLE_MOSS);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.JUNGLE_MOSS, EndBlocks.SMALL_JELLYSHROOM, 0.1F);
|
BonemealAPI.addLandGrass(EndBlocks.JUNGLE_MOSS, EndBlocks.SMALL_JELLYSHROOM, 0.1F);
|
||||||
|
|
||||||
// Wait for Lib changes
|
BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.END_MOSS, EndBlocks.BLOOMING_COOKSONIA);
|
||||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.BLOOMING_COOKSONIA);
|
BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.END_MOSS, EndBlocks.VAIOLUSH_FERN);
|
||||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.VAIOLUSH_FERN);
|
BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.END_MOSS, EndBlocks.FRACTURN);
|
||||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.FRACTURN);
|
BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.END_MOSS, EndBlocks.SALTEAGO);
|
||||||
//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.getID(), 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.getID(), EndBlocks.END_MOSS, EndBlocks.UMBRELLA_MOSS, 0.1F);
|
||||||
//BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS, EndBlocks.END_MOSS, EndBlocks.TWISTED_UMBRELLA_MOSS, 0.1F);
|
BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.END_MOSS, EndBlocks.TWISTED_UMBRELLA_MOSS, 0.1F);
|
||||||
|
|
||||||
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.ORANGO);
|
BonemealAPI.addLandGrass(EndBlocks.ORANGO, EndBlocks.RUTISCUS);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.AERIDIUM, 0.2F);
|
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.AERIDIUM, 0.2F);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.LUTEBUS, 0.2F);
|
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.LUTEBUS, 0.2F);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.LAMELLARIUM);
|
BonemealAPI.addLandGrass(EndBlocks.RUTISCUS, EndBlocks.LAMELLARIUM);
|
||||||
|
|
||||||
//BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS, EndBlocks.RUTISCUS, EndBlocks.AERIDIUM, 0.2F);
|
BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS.getID(), EndBlocks.RUTISCUS, EndBlocks.AERIDIUM, 0.2F);
|
||||||
//BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS, EndBlocks.RUTISCUS, EndBlocks.LAMELLARIUM);
|
BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS.getID(), EndBlocks.RUTISCUS, EndBlocks.LAMELLARIUM);
|
||||||
//BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS, EndBlocks.RUTISCUS, EndBlocks.BOLUX_MUSHROOM, 0.05F);
|
BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS.getID(), EndBlocks.RUTISCUS, EndBlocks.BOLUX_MUSHROOM, 0.05F);
|
||||||
|
|
||||||
BonemealAPI.addLandGrass(EndBlocks.SANGNUM, EndBlocks.GLOBULAGUS);
|
BonemealAPI.addLandGrass(EndBlocks.GLOBULAGUS, EndBlocks.SANGNUM, EndBlocks.MOSSY_OBSIDIAN, EndBlocks.MOSSY_DRAGON_BONE);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.SANGNUM, EndBlocks.CLAWFERN);
|
BonemealAPI.addLandGrass(EndBlocks.CLAWFERN, EndBlocks.SANGNUM, EndBlocks.MOSSY_OBSIDIAN, EndBlocks.MOSSY_DRAGON_BONE);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.SANGNUM, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
BonemealAPI.addLandGrass(EndBlocks.SANGNUM, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
||||||
|
BonemealAPI.addLandGrass(EndBlocks.MOSSY_OBSIDIAN, 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_DRAGON_BONE, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
||||||
|
|
||||||
BonemealAPI.addLandGrass(EndBlocks.MOSSY_OBSIDIAN, EndBlocks.GLOBULAGUS);
|
BonemealAPI.addLandGrass(EndBlocks.GLOBULAGUS, EndBlocks.MOSSY_DRAGON_BONE);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.MOSSY_OBSIDIAN, EndBlocks.CLAWFERN);
|
BonemealAPI.addLandGrass(EndBlocks.CLAWFERN, EndBlocks.MOSSY_DRAGON_BONE);
|
||||||
|
BonemealAPI.addLandGrass(EndBlocks.SMALL_AMARANITA_MUSHROOM, EndBlocks.MOSSY_DRAGON_BONE, 0.1F);
|
||||||
|
|
||||||
|
BonemealAPI.addLandGrass(EndBlocks.GLOBULAGUS, EndBlocks.MOSSY_OBSIDIAN);
|
||||||
|
BonemealAPI.addLandGrass(EndBlocks.CLAWFERN, EndBlocks.MOSSY_OBSIDIAN);
|
||||||
BonemealAPI.addLandGrass(EndBlocks.MOSSY_OBSIDIAN, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
BonemealAPI.addLandGrass(EndBlocks.MOSSY_OBSIDIAN, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,94 +0,0 @@
|
||||||
package ru.betterend.util;
|
|
||||||
|
|
||||||
import java.io.DataInputStream;
|
|
||||||
import java.io.DataOutputStream;
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
|
|
||||||
import net.minecraft.nbt.CompoundTag;
|
|
||||||
import net.minecraft.nbt.ListTag;
|
|
||||||
import net.minecraft.nbt.NbtIo;
|
|
||||||
import net.minecraft.world.level.ChunkPos;
|
|
||||||
import net.minecraft.world.level.chunk.storage.RegionFile;
|
|
||||||
|
|
||||||
public class DataFixerUtil {
|
|
||||||
private static final Map<String, String> REPLACEMENT = Maps.newHashMap();
|
|
||||||
|
|
||||||
public static void init() {
|
|
||||||
//addFix("minecraft:stone", "minecraft:glowstone"); // Example
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void fixData(File dir) {
|
|
||||||
if (REPLACEMENT.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<File> regions = getAllRegions(dir, null);
|
|
||||||
regions.parallelStream().forEach((file) -> {
|
|
||||||
try {
|
|
||||||
System.out.println("Fixing " + file);
|
|
||||||
boolean[] changed = new boolean[1];
|
|
||||||
RegionFile region = new RegionFile(file, file.getParentFile(), true);
|
|
||||||
for (int x = 0; x < 32; x++) {
|
|
||||||
for (int z = 0; z < 32; z++) {
|
|
||||||
ChunkPos pos = new ChunkPos(x, z);
|
|
||||||
changed[0] = false;
|
|
||||||
if (region.hasChunk(pos)) {
|
|
||||||
DataInputStream input = region.getChunkDataInputStream(pos);
|
|
||||||
CompoundTag root = NbtIo.read(input);
|
|
||||||
input.close();
|
|
||||||
ListTag sections = root.getCompound("Level").getList("Sections", 10);
|
|
||||||
sections.forEach((tag) -> {
|
|
||||||
ListTag palette = ((CompoundTag) tag).getList("Palette", 10);
|
|
||||||
palette.forEach((blockTag) -> {
|
|
||||||
CompoundTag blockTagCompound = ((CompoundTag) blockTag);
|
|
||||||
String name = blockTagCompound.getString("Name");
|
|
||||||
String replace = REPLACEMENT.get(name);
|
|
||||||
if (replace != null) {
|
|
||||||
blockTagCompound.putString("Name", replace);
|
|
||||||
changed[0] = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
if (changed[0]) {
|
|
||||||
System.out.println("Write!");
|
|
||||||
DataOutputStream output = region.getChunkDataOutputStream(pos);
|
|
||||||
NbtIo.write(root, output);
|
|
||||||
output.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
region.close();
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static void addFix(String result, String... names) {
|
|
||||||
for (String name: names) {
|
|
||||||
REPLACEMENT.put(name, result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<File> getAllRegions(File dir, List<File> list) {
|
|
||||||
if (list == null) {
|
|
||||||
list = Lists.newArrayList();
|
|
||||||
}
|
|
||||||
for (File file: dir.listFiles()) {
|
|
||||||
if (file.isDirectory()) {
|
|
||||||
getAllRegions(file, list);
|
|
||||||
}
|
|
||||||
else if (file.isFile() && file.getName().endsWith(".mca")) {
|
|
||||||
list.add(file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue