Added palm trees (for growing bananas) and a palm wood type
1
assets/models/bananas.bbmodel
Normal file
|
@ -10,14 +10,17 @@ import com.minelittlepony.unicopia.server.world.UTreeGen;
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricMaterialBuilder;
|
import net.fabricmc.fabric.api.object.builder.v1.block.FabricMaterialBuilder;
|
||||||
|
import net.fabricmc.fabric.api.registry.FlammableBlockRegistry;
|
||||||
import net.fabricmc.fabric.api.registry.StrippableBlockRegistry;
|
import net.fabricmc.fabric.api.registry.StrippableBlockRegistry;
|
||||||
import net.minecraft.block.*;
|
import net.minecraft.block.*;
|
||||||
|
import net.minecraft.block.AbstractBlock.Settings;
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
import net.minecraft.item.*;
|
import net.minecraft.item.*;
|
||||||
import net.minecraft.sound.BlockSoundGroup;
|
import net.minecraft.sound.BlockSoundGroup;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
|
import net.minecraft.util.shape.VoxelShapes;
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
import net.minecraft.world.BlockView;
|
import net.minecraft.world.BlockView;
|
||||||
|
@ -45,6 +48,17 @@ public interface UBlocks {
|
||||||
Block ZAP_BULB = register("zap_bulb", new FruitBlock(FabricBlockSettings.of(Material.GOURD, MapColor.GRAY).strength(500, 1200).sounds(BlockSoundGroup.AZALEA_LEAVES), Direction.DOWN, ZAP_LEAVES, FruitBlock.DEFAULT_SHAPE, false));
|
Block ZAP_BULB = register("zap_bulb", new FruitBlock(FabricBlockSettings.of(Material.GOURD, MapColor.GRAY).strength(500, 1200).sounds(BlockSoundGroup.AZALEA_LEAVES), Direction.DOWN, ZAP_LEAVES, FruitBlock.DEFAULT_SHAPE, false));
|
||||||
Block ZAP_APPLE = register("zap_apple", new FruitBlock(FabricBlockSettings.of(Material.GOURD, MapColor.GRAY).sounds(BlockSoundGroup.AZALEA_LEAVES), Direction.DOWN, ZAP_LEAVES, FruitBlock.DEFAULT_SHAPE, false));
|
Block ZAP_APPLE = register("zap_apple", new FruitBlock(FabricBlockSettings.of(Material.GOURD, MapColor.GRAY).sounds(BlockSoundGroup.AZALEA_LEAVES), Direction.DOWN, ZAP_LEAVES, FruitBlock.DEFAULT_SHAPE, false));
|
||||||
|
|
||||||
|
Block PALM_LOG = register("palm_log", createLogBlock(MapColor.OFF_WHITE, MapColor.SPRUCE_BROWN), ItemGroups.BUILDING_BLOCKS);
|
||||||
|
Block PALM_WOOD = register("palm_wood", createWoodBlock(MapColor.OFF_WHITE), ItemGroups.BUILDING_BLOCKS);
|
||||||
|
Block PALM_PLANKS = register("palm_planks", new Block(Settings.of(Material.WOOD, MapColor.OFF_WHITE).strength(2, 3).sounds(BlockSoundGroup.WOOD)), ItemGroups.BUILDING_BLOCKS);
|
||||||
|
|
||||||
|
Block STRIPPED_PALM_LOG = register("stripped_palm_log", createLogBlock(MapColor.OFF_WHITE, MapColor.OFF_WHITE), ItemGroups.BUILDING_BLOCKS);
|
||||||
|
Block STRIPPED_PALM_WOOD = register("stripped_palm_wood", createWoodBlock(MapColor.OFF_WHITE), ItemGroups.BUILDING_BLOCKS);
|
||||||
|
|
||||||
|
Block PALM_LEAVES = register("palm_leaves", createLeavesBlock(BlockSoundGroup.GRASS), ItemGroups.BUILDING_BLOCKS);
|
||||||
|
|
||||||
|
Block BANANAS = register("bananas", new FruitBlock(FabricBlockSettings.of(Material.GOURD, MapColor.YELLOW).sounds(BlockSoundGroup.WOOD).hardness(3), Direction.DOWN, PALM_LEAVES, VoxelShapes.fullCube()));
|
||||||
|
|
||||||
Block WEATHER_VANE = register("weather_vane", new WeatherVaneBlock(FabricBlockSettings.of(Material.METAL, MapColor.BLACK).requiresTool().strength(3.0f, 6.0f).sounds(BlockSoundGroup.METAL).nonOpaque()), ItemGroups.TOOLS);
|
Block WEATHER_VANE = register("weather_vane", new WeatherVaneBlock(FabricBlockSettings.of(Material.METAL, MapColor.BLACK).requiresTool().strength(3.0f, 6.0f).sounds(BlockSoundGroup.METAL).nonOpaque()), ItemGroups.TOOLS);
|
||||||
|
|
||||||
Block GREEN_APPLE_LEAVES = register("green_apple_leaves", new FruitBearingBlock(FabricBlockSettings.copy(Blocks.OAK_LEAVES),
|
Block GREEN_APPLE_LEAVES = register("green_apple_leaves", new FruitBearingBlock(FabricBlockSettings.copy(Blocks.OAK_LEAVES),
|
||||||
|
@ -102,8 +116,19 @@ public interface UBlocks {
|
||||||
|
|
||||||
static void bootstrap() {
|
static void bootstrap() {
|
||||||
StrippableBlockRegistry.register(ZAP_LOG, STRIPPED_ZAP_LOG);
|
StrippableBlockRegistry.register(ZAP_LOG, STRIPPED_ZAP_LOG);
|
||||||
|
StrippableBlockRegistry.register(PALM_LOG, STRIPPED_PALM_LOG);
|
||||||
StrippableBlockRegistry.register(ZAP_WOOD, STRIPPED_ZAP_WOOD);
|
StrippableBlockRegistry.register(ZAP_WOOD, STRIPPED_ZAP_WOOD);
|
||||||
|
StrippableBlockRegistry.register(PALM_WOOD, STRIPPED_PALM_WOOD);
|
||||||
TRANSLUCENT_BLOCKS.add(WEATHER_VANE);
|
TRANSLUCENT_BLOCKS.add(WEATHER_VANE);
|
||||||
|
TintedBlock.REGISTRY.add(PALM_LEAVES);
|
||||||
|
|
||||||
|
FlammableBlockRegistry.getDefaultInstance().add(PALM_LEAVES, 30, 60);
|
||||||
|
FlammableBlockRegistry.getDefaultInstance().add(PALM_LOG, 5, 5);
|
||||||
|
FlammableBlockRegistry.getDefaultInstance().add(PALM_WOOD, 5, 5);
|
||||||
|
FlammableBlockRegistry.getDefaultInstance().add(STRIPPED_PALM_LOG, 5, 5);
|
||||||
|
FlammableBlockRegistry.getDefaultInstance().add(STRIPPED_PALM_WOOD, 5, 5);
|
||||||
|
FlammableBlockRegistry.getDefaultInstance().add(PALM_PLANKS, 5, 20);
|
||||||
|
FlammableBlockRegistry.getDefaultInstance().add(BANANAS, 5, 20);
|
||||||
|
|
||||||
UBlockEntities.bootstrap();
|
UBlockEntities.bootstrap();
|
||||||
}
|
}
|
||||||
|
@ -112,6 +137,18 @@ public interface UBlocks {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PillarBlock createLogBlock(MapColor topMapColor, MapColor sideMapColor) {
|
||||||
|
return new PillarBlock(AbstractBlock.Settings.of(Material.WOOD, state -> state.get(PillarBlock.AXIS) == Direction.Axis.Y ? topMapColor : sideMapColor).strength(2).sounds(BlockSoundGroup.WOOD));
|
||||||
|
}
|
||||||
|
|
||||||
|
static PillarBlock createWoodBlock(MapColor mapColor) {
|
||||||
|
return new PillarBlock(AbstractBlock.Settings.of(Material.WOOD, mapColor).strength(2).sounds(BlockSoundGroup.WOOD));
|
||||||
|
}
|
||||||
|
|
||||||
|
static LeavesBlock createLeavesBlock(BlockSoundGroup soundGroup) {
|
||||||
|
return new LeavesBlock(AbstractBlock.Settings.of(Material.LEAVES).strength(0.2F).ticksRandomly().sounds(soundGroup).nonOpaque().allowsSpawning(UBlocks::canSpawnOnLeaves).suffocates(UBlocks::never).blockVision(UBlocks::never));
|
||||||
|
}
|
||||||
|
|
||||||
static Boolean canSpawnOnLeaves(BlockState state, BlockView world, BlockPos pos, EntityType<?> type) {
|
static Boolean canSpawnOnLeaves(BlockState state, BlockView world, BlockPos pos, EntityType<?> type) {
|
||||||
return type == EntityType.OCELOT || type == EntityType.PARROT;
|
return type == EntityType.OCELOT || type == EntityType.PARROT;
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,7 +136,11 @@ public interface URenderers {
|
||||||
color = BiomeColors.getFoliageColor(view, pos);
|
color = BiomeColors.getFoliageColor(view, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ((TintedBlock)state.getBlock()).getTint(state, view, pos, color);
|
if (state.getBlock() instanceof TintedBlock block) {
|
||||||
|
return block.getTint(state, view, pos, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
return color;
|
||||||
};
|
};
|
||||||
|
|
||||||
ColorProviderRegistry.BLOCK.register(tintedProvider, TintedBlock.REGISTRY.stream().toArray(Block[]::new));
|
ColorProviderRegistry.BLOCK.register(tintedProvider, TintedBlock.REGISTRY.stream().toArray(Block[]::new));
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
package com.minelittlepony.unicopia.server.world;
|
||||||
|
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
|
import com.minelittlepony.unicopia.Unicopia;
|
||||||
|
import com.minelittlepony.unicopia.block.UBlocks;
|
||||||
|
import com.mojang.serialization.Codec;
|
||||||
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.registry.Registries;
|
||||||
|
import net.minecraft.registry.Registry;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.intprovider.IntProvider;
|
||||||
|
import net.minecraft.util.math.random.Random;
|
||||||
|
import net.minecraft.world.TestableWorld;
|
||||||
|
import net.minecraft.world.gen.feature.TreeFeatureConfig;
|
||||||
|
import net.minecraft.world.gen.foliage.FoliagePlacer;
|
||||||
|
import net.minecraft.world.gen.foliage.FoliagePlacerType;
|
||||||
|
|
||||||
|
public class FernFoliagePlacer extends FoliagePlacer {
|
||||||
|
public static final Codec<FernFoliagePlacer> CODEC = RecordCodecBuilder.create(instance -> fillFoliagePlacerFields(instance).apply(instance, FernFoliagePlacer::new));
|
||||||
|
public static final FoliagePlacerType<FernFoliagePlacer> TYPE = Registry.register(Registries.FOLIAGE_PLACER_TYPE, Unicopia.id("fern_foliage_placer"), new FoliagePlacerType<>(CODEC));
|
||||||
|
|
||||||
|
public FernFoliagePlacer(IntProvider radius, IntProvider offset) {
|
||||||
|
super(radius, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected FoliagePlacerType<?> getType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void generate(TestableWorld world, BiConsumer<BlockPos, BlockState> placer, Random random,
|
||||||
|
TreeFeatureConfig config, int trunkHeight, TreeNode node, int foliageHeight, int radius, int offset) {
|
||||||
|
|
||||||
|
BlockPos center = node.getCenter();
|
||||||
|
|
||||||
|
// central leaves blob
|
||||||
|
for (int y = offset; y >= offset - foliageHeight; --y) {
|
||||||
|
int rad = Math.max(radius + node.getFoliageRadius() - 3 - y / 2, 0);
|
||||||
|
generateSquare(world, placer, random, config, center, rad, y, node.isGiantTrunk());
|
||||||
|
}
|
||||||
|
|
||||||
|
BlockPos.Mutable pos = new BlockPos.Mutable();
|
||||||
|
int fanY = 0;
|
||||||
|
for (int outset = 1; outset < 6; outset++) {
|
||||||
|
for (int j = 0; j < 2; j++) {
|
||||||
|
if (outset < 4) {
|
||||||
|
// diagonal frons
|
||||||
|
for (int z = 0; z < 2; z++) {
|
||||||
|
placeFoliageBlock(world, placer, random, config, pos.set(center, outset, fanY, outset + z));
|
||||||
|
placeFoliageBlock(world, placer, random, config, pos.set(center, outset, fanY, -outset + z));
|
||||||
|
placeFoliageBlock(world, placer, random, config, pos.set(center, -outset + z, fanY, outset));
|
||||||
|
placeFoliageBlock(world, placer, random, config, pos.set(center, -outset + z, fanY, -outset));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// adjacent frons
|
||||||
|
placeFoliageBlock(world, placer, random, config, pos.set(center, outset, fanY, 0));
|
||||||
|
placeFoliageBlock(world, placer, random, config, pos.set(center, 0, fanY, outset));
|
||||||
|
placeFoliageBlock(world, placer, random, config, pos.set(center, 0, fanY, -outset));
|
||||||
|
placeFoliageBlock(world, placer, random, config, pos.set(center, -outset, fanY, 0));
|
||||||
|
|
||||||
|
if (j != 0 || outset % 2 != 0) break;
|
||||||
|
fanY--;
|
||||||
|
}
|
||||||
|
|
||||||
|
// fruit
|
||||||
|
if (outset == 1) {
|
||||||
|
BlockState fruitState = UBlocks.BANANAS.getDefaultState();
|
||||||
|
if (random.nextInt(5) == 0) {
|
||||||
|
placer.accept(pos.set(center, outset, fanY - 1, 0), fruitState);
|
||||||
|
}
|
||||||
|
if (random.nextInt(5) == 0) {
|
||||||
|
placer.accept(pos.set(center, -outset, fanY - 1, 0), fruitState);
|
||||||
|
}
|
||||||
|
if (random.nextInt(5) == 0) {
|
||||||
|
placer.accept(pos.set(center, 0, fanY - 1, outset), fruitState);
|
||||||
|
}
|
||||||
|
if (random.nextInt(5) == 0) {
|
||||||
|
placer.accept(pos.set(center, 0, fanY - 1, -outset), fruitState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRandomHeight(Random random, int trunkHeight, TreeFeatureConfig config) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean isInvalidForLeaves(Random random, int dx, int y, int dz, int radius, boolean giantTrunk) {
|
||||||
|
return dx == radius && dz == radius && (random.nextInt(2) == 0 || y == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,8 +1,9 @@
|
||||||
package com.minelittlepony.unicopia.server.world;
|
package com.minelittlepony.unicopia.server.world;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.BiFunction;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
import com.minelittlepony.unicopia.block.UBlocks;
|
import com.minelittlepony.unicopia.block.UBlocks;
|
||||||
|
|
||||||
|
@ -65,6 +66,7 @@ public record Tree (
|
||||||
private Block logType = Blocks.OAK_LOG;
|
private Block logType = Blocks.OAK_LOG;
|
||||||
private Block leavesType = Blocks.OAK_LEAVES;
|
private Block leavesType = Blocks.OAK_LEAVES;
|
||||||
private Optional<Identifier> saplingId = Optional.empty();
|
private Optional<Identifier> saplingId = Optional.empty();
|
||||||
|
private BiFunction<SaplingGenerator, Block.Settings, SaplingBlock> saplingConstructor = SaplingBlock::new;
|
||||||
|
|
||||||
private final TrunkPlacer trunkPlacer;
|
private final TrunkPlacer trunkPlacer;
|
||||||
private final FoliagePlacer foliagePlacer;
|
private final FoliagePlacer foliagePlacer;
|
||||||
|
@ -73,7 +75,7 @@ public record Tree (
|
||||||
|
|
||||||
private Optional<Predicate<BiomeSelectionContext>> selector = Optional.empty();
|
private Optional<Predicate<BiomeSelectionContext>> selector = Optional.empty();
|
||||||
private Optional<PlacementModifier> countModifier = Optional.empty();
|
private Optional<PlacementModifier> countModifier = Optional.empty();
|
||||||
private Optional<Supplier<TreeFeatureConfig.Builder>> configSupplier = Optional.empty();
|
private Function<TreeFeatureConfig.Builder, TreeFeatureConfig.Builder> configParameters = Function.identity();
|
||||||
private Optional<TwoLayersFeatureSize> size = Optional.empty();
|
private Optional<TwoLayersFeatureSize> size = Optional.empty();
|
||||||
|
|
||||||
private Builder(Identifier id, TrunkPlacer trunkPlacer, FoliagePlacer foliagePlacer) {
|
private Builder(Identifier id, TrunkPlacer trunkPlacer, FoliagePlacer foliagePlacer) {
|
||||||
|
@ -97,6 +99,11 @@ public record Tree (
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder sapling(BiFunction<SaplingGenerator, Block.Settings, SaplingBlock> constructor) {
|
||||||
|
saplingConstructor = constructor;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Builder count(int count, float extraChance, int extraCount) {
|
public Builder count(int count, float extraChance, int extraCount) {
|
||||||
countModifier = Optional.of(PlacedFeatures.createCountExtraModifier(count, extraChance, extraCount));
|
countModifier = Optional.of(PlacedFeatures.createCountExtraModifier(count, extraChance, extraCount));
|
||||||
return this;
|
return this;
|
||||||
|
@ -107,8 +114,8 @@ public record Tree (
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder shape(Supplier<TreeFeatureConfig.Builder> shape) {
|
public Builder configure(Function<TreeFeatureConfig.Builder, TreeFeatureConfig.Builder> shape) {
|
||||||
this.configSupplier = Optional.of(shape);
|
this.configParameters = shape;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,18 +126,17 @@ public record Tree (
|
||||||
|
|
||||||
public Tree build() {
|
public Tree build() {
|
||||||
RegistryKey<ConfiguredFeature<?, ?>> configuredFeatureId = RegistryKey.of(RegistryKeys.CONFIGURED_FEATURE, id);
|
RegistryKey<ConfiguredFeature<?, ?>> configuredFeatureId = RegistryKey.of(RegistryKeys.CONFIGURED_FEATURE, id);
|
||||||
Tree tree = new Tree(id, configSupplier.map(Supplier::get)
|
Tree tree = new Tree(id, configParameters.apply(new TreeFeatureConfig.Builder(
|
||||||
.orElseGet(() -> new TreeFeatureConfig.Builder(
|
|
||||||
BlockStateProvider.of(logType),
|
BlockStateProvider.of(logType),
|
||||||
trunkPlacer,
|
trunkPlacer,
|
||||||
BlockStateProvider.of(leavesType),
|
BlockStateProvider.of(leavesType),
|
||||||
foliagePlacer,
|
foliagePlacer,
|
||||||
size.get()
|
size.get()
|
||||||
).forceDirt()), configuredFeatureId, selector.map(selector -> {
|
)), configuredFeatureId, selector.map(selector -> {
|
||||||
RegistryKey<PlacedFeature> i = RegistryKey.of(RegistryKeys.PLACED_FEATURE, id);
|
RegistryKey<PlacedFeature> i = RegistryKey.of(RegistryKeys.PLACED_FEATURE, id);
|
||||||
BiomeModifications.addFeature(selector, GenerationStep.Feature.VEGETAL_DECORATION, i);
|
BiomeModifications.addFeature(selector, GenerationStep.Feature.VEGETAL_DECORATION, i);
|
||||||
return i;
|
return i;
|
||||||
}), saplingId.map(id -> UBlocks.register(id, new SaplingBlock(new SaplingGenerator() {
|
}), saplingId.map(id -> UBlocks.register(id, saplingConstructor.apply(new SaplingGenerator() {
|
||||||
@Override
|
@Override
|
||||||
protected RegistryKey<ConfiguredFeature<?, ?>> getTreeFeature(Random rng, boolean flowersNearby) {
|
protected RegistryKey<ConfiguredFeature<?, ?>> getTreeFeature(Random rng, boolean flowersNearby) {
|
||||||
return configuredFeatureId;
|
return configuredFeatureId;
|
||||||
|
|
|
@ -4,12 +4,17 @@ import com.minelittlepony.unicopia.Unicopia;
|
||||||
import com.minelittlepony.unicopia.block.UBlocks;
|
import com.minelittlepony.unicopia.block.UBlocks;
|
||||||
|
|
||||||
import net.minecraft.block.*;
|
import net.minecraft.block.*;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.intprovider.ConstantIntProvider;
|
import net.minecraft.util.math.intprovider.ConstantIntProvider;
|
||||||
import net.minecraft.util.math.intprovider.UniformIntProvider;
|
import net.minecraft.util.math.intprovider.UniformIntProvider;
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
|
import net.minecraft.registry.tag.BiomeTags;
|
||||||
import net.minecraft.registry.tag.BlockTags;
|
import net.minecraft.registry.tag.BlockTags;
|
||||||
|
import net.minecraft.world.BlockView;
|
||||||
|
import net.minecraft.world.gen.feature.TreeFeatureConfig;
|
||||||
import net.minecraft.world.gen.foliage.BlobFoliagePlacer;
|
import net.minecraft.world.gen.foliage.BlobFoliagePlacer;
|
||||||
import net.minecraft.world.gen.foliage.JungleFoliagePlacer;
|
import net.minecraft.world.gen.foliage.JungleFoliagePlacer;
|
||||||
|
import net.minecraft.world.gen.stateprovider.BlockStateProvider;
|
||||||
import net.minecraft.world.gen.trunk.StraightTrunkPlacer;
|
import net.minecraft.world.gen.trunk.StraightTrunkPlacer;
|
||||||
import net.minecraft.world.gen.trunk.UpwardsBranchingTrunkPlacer;
|
import net.minecraft.world.gen.trunk.UpwardsBranchingTrunkPlacer;
|
||||||
|
|
||||||
|
@ -26,6 +31,7 @@ public interface UTreeGen {
|
||||||
3
|
3
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
.configure(TreeFeatureConfig.Builder::forceDirt)
|
||||||
.log(UBlocks.ZAP_LOG)
|
.log(UBlocks.ZAP_LOG)
|
||||||
.leaves(UBlocks.ZAP_LEAVES)
|
.leaves(UBlocks.ZAP_LEAVES)
|
||||||
.sapling(Unicopia.id("zapling"))
|
.sapling(Unicopia.id("zapling"))
|
||||||
|
@ -36,12 +42,32 @@ public interface UTreeGen {
|
||||||
Tree GREEN_APPLE_TREE = createAppleTree("green_apple", UBlocks.GREEN_APPLE_LEAVES, 2);
|
Tree GREEN_APPLE_TREE = createAppleTree("green_apple", UBlocks.GREEN_APPLE_LEAVES, 2);
|
||||||
Tree SWEET_APPLE_TREE = createAppleTree("sweet_apple", UBlocks.SWEET_APPLE_LEAVES, 3);
|
Tree SWEET_APPLE_TREE = createAppleTree("sweet_apple", UBlocks.SWEET_APPLE_LEAVES, 3);
|
||||||
Tree SOUR_APPLE_TREE = createAppleTree("sour_apple", UBlocks.SOUR_APPLE_LEAVES, 5);
|
Tree SOUR_APPLE_TREE = createAppleTree("sour_apple", UBlocks.SOUR_APPLE_LEAVES, 5);
|
||||||
|
Tree BANANA_TREE = Tree.Builder.create(Unicopia.id("banana_tree"),
|
||||||
|
new StraightTrunkPlacer(4, 5, 3),
|
||||||
|
new FernFoliagePlacer(ConstantIntProvider.create(4), ConstantIntProvider.create(0))
|
||||||
|
)
|
||||||
|
.farmingCondition(6, 0, 8)
|
||||||
|
.log(UBlocks.PALM_LOG)
|
||||||
|
.leaves(UBlocks.PALM_LEAVES)
|
||||||
|
.sapling(Unicopia.id("palm_sapling")).sapling((generator, settings) -> {
|
||||||
|
return new SaplingBlock(generator, settings) {
|
||||||
|
@Override
|
||||||
|
protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) {
|
||||||
|
return floor.isIn(BlockTags.SAND);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})
|
||||||
|
.configure(builder -> builder.dirtProvider(BlockStateProvider.of(Blocks.SAND)))
|
||||||
|
.biomes(selector -> selector.hasTag(BiomeTags.IS_BEACH) || selector.hasTag(BiomeTags.IS_JUNGLE))
|
||||||
|
.count(2, 0.01F, 1)
|
||||||
|
.build();
|
||||||
|
|
||||||
static Tree createAppleTree(String name, Block leaves, int preferredDensity) {
|
static Tree createAppleTree(String name, Block leaves, int preferredDensity) {
|
||||||
return Tree.Builder.create(Unicopia.id(name + "_tree"),
|
return Tree.Builder.create(Unicopia.id(name + "_tree"),
|
||||||
new StraightTrunkPlacer(4, 6, 2),
|
new StraightTrunkPlacer(4, 6, 2),
|
||||||
new BlobFoliagePlacer(ConstantIntProvider.create(3), ConstantIntProvider.create(0), 3)
|
new BlobFoliagePlacer(ConstantIntProvider.create(3), ConstantIntProvider.create(0), 3)
|
||||||
)
|
)
|
||||||
|
.configure(TreeFeatureConfig.Builder::forceDirt)
|
||||||
.farmingCondition(1, preferredDensity - 2, preferredDensity)
|
.farmingCondition(1, preferredDensity - 2, preferredDensity)
|
||||||
.log(Blocks.OAK_LOG)
|
.log(Blocks.OAK_LOG)
|
||||||
.leaves(leaves)
|
.leaves(leaves)
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "unicopia:block/bananas"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "unicopia:block/palm_leaves"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
16
src/main/resources/assets/unicopia/blockstates/palm_log.json
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"axis=x": {
|
||||||
|
"model": "unicopia:block/palm_log_horizontal",
|
||||||
|
"x": 90,
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"axis=y": {
|
||||||
|
"model": "unicopia:block/palm_log"
|
||||||
|
},
|
||||||
|
"axis=z": {
|
||||||
|
"model": "unicopia:block/palm_log_horizontal",
|
||||||
|
"x": 90
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "unicopia:block/palm_planks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "unicopia:block/palm_sapling"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "unicopia:block/palm_wood"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"axis=x": {
|
||||||
|
"model": "unicopia:block/stripped_palm_log_horizontal",
|
||||||
|
"x": 90,
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"axis=y": {
|
||||||
|
"model": "unicopia:block/stripped_palm_log"
|
||||||
|
},
|
||||||
|
"axis=z": {
|
||||||
|
"model": "unicopia:block/stripped_palm_log_horizontal",
|
||||||
|
"x": 90
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "unicopia:block/stripped_palm_wood"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -140,6 +140,13 @@
|
||||||
"block.unicopia.zap_leaves": "Zap Apple Leaves",
|
"block.unicopia.zap_leaves": "Zap Apple Leaves",
|
||||||
"block.unicopia.zap_apple": "Zap Apple",
|
"block.unicopia.zap_apple": "Zap Apple",
|
||||||
"block.unicopia.zap_bulb": "Unripened Zap Apple",
|
"block.unicopia.zap_bulb": "Unripened Zap Apple",
|
||||||
|
"block.unicopia.palm_sapling": "Palm Sapling",
|
||||||
|
"block.unicopia.palm_log": "Palm Log",
|
||||||
|
"block.unicopia.palm_wood": "Palm Wood",
|
||||||
|
"block.unicopia.palm_planks": "Palm Planks",
|
||||||
|
"block.unicopia.stripped_palm_log": "Stripped Palm Log",
|
||||||
|
"block.unicopia.stripped_palm_wood": "Stripped Palm Wood",
|
||||||
|
"block.unicopia.palm_leaves": "Palm Leaves",
|
||||||
"block.unicopia.apple_pie": "Apple Pie",
|
"block.unicopia.apple_pie": "Apple Pie",
|
||||||
"block.unicopia.weather_vane": "Weather Vane",
|
"block.unicopia.weather_vane": "Weather Vane",
|
||||||
|
|
||||||
|
|
350
src/main/resources/assets/unicopia/models/block/bananas.json
Normal file
|
@ -0,0 +1,350 @@
|
||||||
|
{
|
||||||
|
"textures": {
|
||||||
|
"bananas": "unicopia:block/bananas",
|
||||||
|
"particle": "#bananas"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [3, 1, 4],
|
||||||
|
"to": [13, 11, 14],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0.25, 0.25, 10.25, 10.25], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [1.25, 0.25, 11.25, 10.25], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [2.25, 0.25, 12.25, 10.25], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [3.25, 0.25, 13.25, 10.25], "texture": "#bananas"},
|
||||||
|
"up": {"uv": [4.25, 0.25, 14.25, 10.25], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [5.25, 0.25, 15.25, 10.25], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [8, -3, 5],
|
||||||
|
"to": [10, 3, 7],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [10, 0, 6],
|
||||||
|
"to": [12, 6, 8],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [10, 4, 7],
|
||||||
|
"to": [12, 10, 9],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [8, 4, 7],
|
||||||
|
"to": [10, 10, 9],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [12, 5, 10],
|
||||||
|
"to": [14, 11, 12],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [7, 0, 6],
|
||||||
|
"to": [9, 6, 8],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [8, 5, 2],
|
||||||
|
"to": [10, 11, 4],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [6, -2, 4],
|
||||||
|
"to": [8, 4, 6],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [10, -3, 6],
|
||||||
|
"to": [12, 3, 8],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [11, 2, 4],
|
||||||
|
"to": [13, 8, 6],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [13, 5, 6],
|
||||||
|
"to": [15, 11, 8],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [5, 5, 14],
|
||||||
|
"to": [11, 11, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [1, 5, 6],
|
||||||
|
"to": [3, 11, 11],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [4, 2, 3],
|
||||||
|
"to": [6, 8, 5],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [5, 2, 6],
|
||||||
|
"to": [7, 8, 8],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [7, -10, 9],
|
||||||
|
"to": [9, -1, 11],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [9, -7, 10],
|
||||||
|
"to": [11, -1, 12],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [9, -3, 11],
|
||||||
|
"to": [11, 3, 13],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [7, -3, 11],
|
||||||
|
"to": [9, 3, 13],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [11, -1, 9],
|
||||||
|
"to": [13, 5, 11],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [6, -7, 10],
|
||||||
|
"to": [8, 2, 12],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [7, -8, 6],
|
||||||
|
"to": [9, -2, 8],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [5, -9, 8],
|
||||||
|
"to": [7, -3, 10],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [9, -10, 7],
|
||||||
|
"to": [11, -1, 9],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [10, -6, 8],
|
||||||
|
"to": [12, 1, 10],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [9, -5, 5],
|
||||||
|
"to": [11, 1, 7],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [6, 0, 3],
|
||||||
|
"to": [8, 6, 5],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [4, -5, 5],
|
||||||
|
"to": [6, 1, 7],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [3, -5, 7],
|
||||||
|
"to": [5, 1, 9],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [4, -3, 9],
|
||||||
|
"to": [6, 3, 11],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 6, 2, 12], "texture": "#bananas"},
|
||||||
|
"east": {"uv": [2, 6, 4, 12], "texture": "#bananas"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#bananas"},
|
||||||
|
"west": {"uv": [2, 0, 4, 6], "texture": "#bananas"},
|
||||||
|
"down": {"uv": [2, 12, 0, 14], "texture": "#bananas"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/leaves",
|
||||||
|
"textures": {
|
||||||
|
"all": "unicopia:block/palm_leaves"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/cube_column",
|
||||||
|
"textures": {
|
||||||
|
"end": "unicopia:block/palm_log_top",
|
||||||
|
"side": "unicopia:block/palm_log"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/cube_column_horizontal",
|
||||||
|
"textures": {
|
||||||
|
"end": "unicopia:block/palm_log_top",
|
||||||
|
"side": "unicopia:block/palm_log"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/cube_all",
|
||||||
|
"textures": {
|
||||||
|
"all": "unicopia:block/palm_planks"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "unicopia:item/palm_sapling"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/cube_all",
|
||||||
|
"textures": {
|
||||||
|
"all": "unicopia:block/palm_log"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/cube_column",
|
||||||
|
"textures": {
|
||||||
|
"end": "unicopia:block/stripped_palm_log_top",
|
||||||
|
"side": "unicopia:block/stripped_palm_log"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/cube_column_horizontal",
|
||||||
|
"textures": {
|
||||||
|
"end": "unicopia:block/stripped_palm_log_top",
|
||||||
|
"side": "unicopia:block/stripped_palm_log"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/cube_all",
|
||||||
|
"textures": {
|
||||||
|
"all": "unicopia:block/stripped_palm_log"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "unicopia:block/palm_leaves"
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "unicopia:block/palm_log"
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "unicopia:block/palm_planks"
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "unicopia:item/palm_sapling"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "unicopia:block/palm_wood"
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "unicopia:block/stripped_palm_log"
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "unicopia:block/stripped_palm_wood"
|
||||||
|
}
|
BIN
src/main/resources/assets/unicopia/textures/block/bananas.png
Normal file
After Width: | Height: | Size: 154 B |
After Width: | Height: | Size: 1.6 KiB |
BIN
src/main/resources/assets/unicopia/textures/block/palm_log.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.5 KiB |
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"replace": false,
|
"replace": false,
|
||||||
"values": [
|
"values": [
|
||||||
|
"unicopia:palm_leaves",
|
||||||
"unicopia:zap_leaves",
|
"unicopia:zap_leaves",
|
||||||
"unicopia:green_apple_leaves",
|
"unicopia:green_apple_leaves",
|
||||||
"unicopia:sweet_apple_leaves",
|
"unicopia:sweet_apple_leaves",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"replace": false,
|
"replace": false,
|
||||||
"values": [
|
"values": [
|
||||||
|
"unicopia:palm_log",
|
||||||
|
"unicopia:palm_wood",
|
||||||
|
"unicopia:stripped_palm_log",
|
||||||
|
"unicopia:stripped_palm_wood",
|
||||||
"unicopia:zap_log",
|
"unicopia:zap_log",
|
||||||
"unicopia:zap_wood",
|
"unicopia:zap_wood",
|
||||||
"unicopia:stripped_zap_log",
|
"unicopia:stripped_zap_log",
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"unicopia:palm_log",
|
||||||
|
"unicopia:palm_wood",
|
||||||
|
"unicopia:stripped_palm_log",
|
||||||
|
"unicopia:stripped_palm_wood"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"unicopia:palm_planks"
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"replace": false,
|
"replace": false,
|
||||||
"values": [
|
"values": [
|
||||||
|
"unicopia:palm_leaves",
|
||||||
"unicopia:zap_leaves",
|
"unicopia:zap_leaves",
|
||||||
"unicopia:green_apple_leaves",
|
"unicopia:green_apple_leaves",
|
||||||
"unicopia:sweet_apple_leaves",
|
"unicopia:sweet_apple_leaves",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"replace": false,
|
"replace": false,
|
||||||
"values": [
|
"values": [
|
||||||
|
"unicopia:palm_log",
|
||||||
|
"unicopia:palm_wood",
|
||||||
|
"unicopia:stripped_palm_log",
|
||||||
|
"unicopia:stripped_palm_wood",
|
||||||
"unicopia:zap_log",
|
"unicopia:zap_log",
|
||||||
"unicopia:zap_wood",
|
"unicopia:zap_wood",
|
||||||
"unicopia:stripped_zap_log",
|
"unicopia:stripped_zap_log",
|
||||||
|
|
6
src/main/resources/data/minecraft/tags/items/planks.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"replace": false,
|
||||||
|
"values": [
|
||||||
|
"unicopia:palm_planks"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"add": false,
|
||||||
|
"count": {
|
||||||
|
"type": "minecraft:uniform",
|
||||||
|
"max": 12.0,
|
||||||
|
"min": 6.0
|
||||||
|
},
|
||||||
|
"function": "minecraft:set_count"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:fortune",
|
||||||
|
"formula": "minecraft:binomial_with_bonus_count",
|
||||||
|
"function": "minecraft:apply_bonus",
|
||||||
|
"parameters": {
|
||||||
|
"extra": 3,
|
||||||
|
"probability": 0.5714286
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "unicopia:banana"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,135 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:alternatives",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:alternative",
|
||||||
|
"terms": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"items": [
|
||||||
|
"minecraft:shears"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "unicopia:palm_leaves"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"chances": [
|
||||||
|
0.05,
|
||||||
|
0.0625,
|
||||||
|
0.083333336,
|
||||||
|
0.1
|
||||||
|
],
|
||||||
|
"condition": "minecraft:table_bonus",
|
||||||
|
"enchantment": "minecraft:fortune"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "unicopia:palm_sapling"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rolls": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:inverted",
|
||||||
|
"term": {
|
||||||
|
"condition": "minecraft:alternative",
|
||||||
|
"terms": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"items": [
|
||||||
|
"minecraft:shears"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"chances": [
|
||||||
|
0.02,
|
||||||
|
0.022222223,
|
||||||
|
0.025,
|
||||||
|
0.033333335,
|
||||||
|
0.1
|
||||||
|
],
|
||||||
|
"condition": "minecraft:table_bonus",
|
||||||
|
"enchantment": "minecraft:fortune"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"add": false,
|
||||||
|
"count": {
|
||||||
|
"type": "minecraft:uniform",
|
||||||
|
"max": 2.0,
|
||||||
|
"min": 1.0
|
||||||
|
},
|
||||||
|
"function": "minecraft:set_count"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"function": "minecraft:explosion_decay"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "minecraft:stick"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rolls": 1.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "unicopia:palm_log"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "unicopia:palm_planks"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "unicopia:palm_sapling"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "unicopia:palm_wood"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "unicopia:stripped_palm_log"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "unicopia:stripped_palm_wood"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
10
src/main/resources/data/unicopia/recipes/palm_planks.json
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shapeless",
|
||||||
|
"ingredients": [
|
||||||
|
{ "item": "unicopia:palm_log" }
|
||||||
|
],
|
||||||
|
"result": {
|
||||||
|
"item": "unicopia:palm_planks",
|
||||||
|
"count": 4
|
||||||
|
}
|
||||||
|
}
|
15
src/main/resources/data/unicopia/recipes/palm_wood.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"pattern": [
|
||||||
|
"##",
|
||||||
|
"##"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"#": {
|
||||||
|
"item": "unicopia:palm_log"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"item": "unicopia:palm_wood"
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ accessible class net/minecraft/client/render/item/HeldItemRenderer$H
|
||||||
accessible method net/minecraft/world/GameRules register (Ljava/lang/String;Lnet/minecraft/world/GameRules$Category;Lnet/minecraft/world/GameRules$Type;)Lnet/minecraft/world/GameRules$Key;
|
accessible method net/minecraft/world/GameRules register (Ljava/lang/String;Lnet/minecraft/world/GameRules$Category;Lnet/minecraft/world/GameRules$Type;)Lnet/minecraft/world/GameRules$Key;
|
||||||
accessible method net/minecraft/world/GameRules$BooleanRule create (Z)Lnet/minecraft/world/GameRules$Type;
|
accessible method net/minecraft/world/GameRules$BooleanRule create (Z)Lnet/minecraft/world/GameRules$Type;
|
||||||
accessible method net/minecraft/world/GameRules$IntRule create (I)Lnet/minecraft/world/GameRules$Type;
|
accessible method net/minecraft/world/GameRules$IntRule create (I)Lnet/minecraft/world/GameRules$Type;
|
||||||
|
accessible method net/minecraft/world/gen/foliage/FoliagePlacerType <init> (Lcom/mojang/serialization/Codec;)V
|
||||||
|
|
||||||
accessible field net/minecraft/entity/mob/CreeperEntity CHARGED Lnet/minecraft/entity/data/TrackedData;
|
accessible field net/minecraft/entity/mob/CreeperEntity CHARGED Lnet/minecraft/entity/data/TrackedData;
|
||||||
accessible field net/minecraft/entity/mob/CreeperEntity IGNITED Lnet/minecraft/entity/data/TrackedData;
|
accessible field net/minecraft/entity/mob/CreeperEntity IGNITED Lnet/minecraft/entity/data/TrackedData;
|