This commit is contained in:
MrJeremyFisher
2024-02-21 21:19:40 -05:00
committed by okx-code
parent 41979a913d
commit f2937512a2
4 changed files with 44 additions and 27 deletions

View File

@@ -6,7 +6,9 @@ plugins {
version = "3.2.3"
dependencies {
paperDevBundle("1.18.2-R0.1-SNAPSHOT")
paperweight {
paperDevBundle("1.20.4-R0.1-SNAPSHOT")
}
compileOnly(project(":plugins:civmodcore-paper"))
compileOnly("com.sk89q.worldedit:worldedit-bukkit:7.2.8")

View File

@@ -3,12 +3,18 @@ package com.untamedears.realisticbiomes.growth;
import com.untamedears.realisticbiomes.model.Plant;
import java.util.Random;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Holder;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.worldgen.features.TreeFeatures;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import org.bukkit.Material;
import org.bukkit.TreeType;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.v1_18_R2.CraftWorld;
import org.bukkit.craftbukkit.v1_20_R3.CraftWorld;
import org.bukkit.craftbukkit.v1_20_R3.util.RandomSourceWrapper;
/**
* We need to differentiate fungus from other types of saplings thanks
@@ -20,7 +26,7 @@ import org.bukkit.craftbukkit.v1_18_R2.CraftWorld;
*/
public class FungusGrower extends AgeableGrower {
private final Random random = new Random();
private final RandomSource randomSource = new RandomSourceWrapper(new Random());
public FungusGrower(final Material material) {
super(material, 1, 1);
@@ -42,18 +48,22 @@ public class FungusGrower extends AgeableGrower {
}
final Block block = plant.getLocation().getBlock();
final Material material = block.getType();
final var growth =
final ResourceKey<ConfiguredFeature<?, ?>> growth =
material == Material.CRIMSON_FUNGUS ? TreeFeatures.CRIMSON_FUNGUS :
material == Material.WARPED_FUNGUS ? TreeFeatures.WARPED_FUNGUS :
material == Material.FLOWERING_AZALEA ? TreeFeatures.AZALEA_TREE :
null;
material == Material.WARPED_FUNGUS ? TreeFeatures.WARPED_FUNGUS :
material == Material.FLOWERING_AZALEA ? TreeFeatures.AZALEA_TREE :
null;
if (growth == null) {
return true;
}
final ServerLevel world = ((CraftWorld) block.getWorld()).getHandle();
final BlockPos position = new BlockPos(block.getX(), block.getY(), block.getZ());
//Taken from CraftWorld.generateTree()
if (!growth.value().place(world, world.getChunkSource().getGenerator(), this.random, position)) {
Holder<ConfiguredFeature<?, ?>> growthHolder = world.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).getHolder(growth).orElse(null);
if (growthHolder == null) return false;
if (!growthHolder.value().place(world, world.getChunkSource().getGenerator(), this.randomSource, position)) {
block.setType(material);
}
return true;

View File

@@ -34,24 +34,28 @@ public class RBUtils {
public static TreeType getTreeType(Block block) {
switch (block.getType()) {
case ACACIA_SAPLING:
return TreeType.ACACIA;
case BIRCH_SAPLING:
return TreeType.BIRCH;
case OAK_SAPLING:
return TreeType.TREE;
case JUNGLE_SAPLING:
return TreeType.JUNGLE;
case DARK_OAK_SAPLING:
return TreeType.DARK_OAK;
case SPRUCE_SAPLING:
return TreeType.REDWOOD;
case CRIMSON_FUNGUS:
return TreeType.CRIMSON_FUNGUS;
case WARPED_FUNGUS:
return TreeType.WARPED_FUNGUS;
case ACACIA_SAPLING:
return TreeType.ACACIA;
case BIRCH_SAPLING:
return TreeType.BIRCH;
case OAK_SAPLING:
return TreeType.TREE;
case JUNGLE_SAPLING:
return TreeType.JUNGLE;
case DARK_OAK_SAPLING:
return TreeType.DARK_OAK;
case SPRUCE_SAPLING:
return TreeType.REDWOOD;
case CRIMSON_FUNGUS:
return TreeType.CRIMSON_FUNGUS;
case WARPED_FUNGUS:
return TreeType.WARPED_FUNGUS;
case FLOWERING_AZALEA:
return TreeType.AZALEA;
return TreeType.AZALEA;
case MANGROVE_PROPAGULE:
return TreeType.MANGROVE;
case CHERRY_SAPLING:
return TreeType.CHERRY;
default:
throw new IllegalArgumentException();
}
@@ -123,7 +127,8 @@ public class RBUtils {
|| material == Material.DARK_OAK_SAPLING || material == Material.JUNGLE_SAPLING
|| material == Material.OAK_SAPLING || material == Material.SPRUCE_SAPLING
|| material == Material.CRIMSON_FUNGUS || material == Material.WARPED_FUNGUS
|| material == Material.FLOWERING_AZALEA;
|| material == Material.FLOWERING_AZALEA || material == Material.MANGROVE_PROPAGULE
|| material == Material.CHERRY_SAPLING;
}
public static boolean isStem(Material mat) {

View File

@@ -15,7 +15,7 @@ authors:
- pruby
- Maxopoly
- BlackXnt
api-version: 1.18
api-version: 1.20
description: RealisticBiomes makes farming harder by limiting growth rates of crops and making them only grow well in certain biomes.
permissions:
rb.public: