diff --git a/gradle.properties b/gradle.properties index de694fb..0d94c4d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ modName=DynamicTreesPHC2 modId=dtphc2 -modVersion=1.0.0 +modVersion=1.1.0 group=maxhyper.dtphc2 mcVersion=1.18.2 diff --git a/src/main/java/maxhyper/dtphc2/DynamicTreesPHC2.java b/src/main/java/maxhyper/dtphc2/DynamicTreesPHC2.java index fb78d06..beaeed3 100644 --- a/src/main/java/maxhyper/dtphc2/DynamicTreesPHC2.java +++ b/src/main/java/maxhyper/dtphc2/DynamicTreesPHC2.java @@ -9,7 +9,7 @@ import com.ferreusveritas.dynamictrees.systems.pod.Pod; import com.ferreusveritas.dynamictrees.tree.family.Family; import com.ferreusveritas.dynamictrees.tree.species.Species; -import com.pam.pamhc2trees.config.EnableConfig; +import com.pam.pamhc2trees.init.WorldGenRegistry; import com.pam.pamhc2trees.init.ItemRegistry; import maxhyper.dtphc2.init.DTPHC2Blocks; import maxhyper.dtphc2.compat.DTPConfig; @@ -62,64 +62,57 @@ public DynamicTreesPHC2() { } private void commonSetup(final FMLConstructModEvent event) { - if (DTConfigs.WORLD_GEN.get()) { - ForgeConfigSpec.BooleanValue[] test = { - EnableConfig.apple_worldgen, - EnableConfig.avocado_worldgen, - EnableConfig.candlenut_worldgen, - EnableConfig.cherry_worldgen, - EnableConfig.chestnut_worldgen, - EnableConfig.gooseberry_worldgen, - EnableConfig.lemon_worldgen, - EnableConfig.nutmeg_worldgen, - EnableConfig.orange_worldgen, - EnableConfig.peach_worldgen, - EnableConfig.pear_worldgen, - EnableConfig.plum_worldgen, - EnableConfig.walnut_worldgen, - EnableConfig.spiderweb_worldgen, - EnableConfig.hazelnut_worldgen, - EnableConfig.pawpaw_worldgen, - EnableConfig.soursop_worldgen, - EnableConfig.almond_worldgen, - EnableConfig.apricot_worldgen, - EnableConfig.banana_worldgen, - EnableConfig.cashew_worldgen, - EnableConfig.cinnamon_worldgen, - EnableConfig.coconut_worldgen, - EnableConfig.date_worldgen, - EnableConfig.dragonfruit_worldgen, - EnableConfig.durian_worldgen, - EnableConfig.fig_worldgen, - EnableConfig.grapefruit_worldgen, - EnableConfig.lime_worldgen, - EnableConfig.mango_worldgen, - EnableConfig.olive_worldgen, - EnableConfig.papaya_worldgen, - EnableConfig.paperbark_worldgen, - EnableConfig.pecan_worldgen, - EnableConfig.peppercorn_worldgen, - EnableConfig.persimmon_worldgen, - EnableConfig.pistachio_worldgen, - EnableConfig.pomegranate_worldgen, - EnableConfig.starfruit_worldgen, - EnableConfig.vanillabean_worldgen, - EnableConfig.breadfruit_worldgen, - EnableConfig.guava_worldgen, - EnableConfig.jackfruit_worldgen, - EnableConfig.lychee_worldgen, - EnableConfig.passionfruit_worldgen, - EnableConfig.rambutan_worldgen, - EnableConfig.tamarind_worldgen, - EnableConfig.maple_worldgen, - EnableConfig.pinenut_worldgen, - }; - - for (ForgeConfigSpec.BooleanValue v : test) { - //v.set(false); - //v.save(); - } - } +// if (DTConfigs.WORLD_GEN.get()) { +// WorldGenRegistry.apple_worldgen = null; +// WorldGenRegistry.avocado_worldgen = null; +// WorldGenRegistry.candlenut_worldgen = null; +// WorldGenRegistry.cherry_worldgen = null; +// WorldGenRegistry.chestnut_worldgen = null; +// WorldGenRegistry.gooseberry_worldgen = null; +// WorldGenRegistry.lemon_worldgen = null; +// WorldGenRegistry.nutmeg_worldgen = null; +// WorldGenRegistry.orange_worldgen = null; +// WorldGenRegistry.peach_worldgen = null; +// WorldGenRegistry.pear_worldgen = null; +// WorldGenRegistry.plum_worldgen = null; +// WorldGenRegistry.walnut_worldgen = null; +// WorldGenRegistry.spiderweb_worldgen = null; +// WorldGenRegistry.hazelnut_worldgen = null; +// WorldGenRegistry.pawpaw_worldgen = null; +// WorldGenRegistry.soursop_worldgen = null; +// WorldGenRegistry.almond_worldgen = null; +// WorldGenRegistry.apricot_worldgen = null; +// WorldGenRegistry.banana_worldgen = null; +// WorldGenRegistry.cashew_worldgen = null; +// WorldGenRegistry.cinnamon_worldgen = null; +// WorldGenRegistry.coconut_worldgen = null; +// WorldGenRegistry.date_worldgen = null; +// WorldGenRegistry.dragonfruit_worldgen = null; +// WorldGenRegistry.durian_worldgen = null; +// WorldGenRegistry.fig_worldgen = null; +// WorldGenRegistry.grapefruit_worldgen = null; +// WorldGenRegistry.lime_worldgen = null; +// WorldGenRegistry.mango_worldgen = null; +// WorldGenRegistry.olive_worldgen = null; +// WorldGenRegistry.papaya_worldgen = null; +// WorldGenRegistry.paperbark_worldgen = null; +// WorldGenRegistry.pecan_worldgen = null; +// WorldGenRegistry.peppercorn_worldgen = null; +// WorldGenRegistry.persimmon_worldgen = null; +// WorldGenRegistry.pistachio_worldgen = null; +// WorldGenRegistry.pomegranate_worldgen = null; +// WorldGenRegistry.starfruit_worldgen = null; +// WorldGenRegistry.vanillabean_worldgen = null; +// WorldGenRegistry.breadfruit_worldgen = null; +// WorldGenRegistry.guava_worldgen = null; +// WorldGenRegistry.jackfruit_worldgen = null; +// WorldGenRegistry.lychee_worldgen = null; +// WorldGenRegistry.passionfruit_worldgen = null; +// WorldGenRegistry.rambutan_worldgen = null; +// WorldGenRegistry.tamarind_worldgen = null; +// WorldGenRegistry.maple_worldgen = null; +// WorldGenRegistry.pinenut_worldgen = null; +// } } private void clientSetup(final FMLClientSetupEvent event) { @@ -140,7 +133,7 @@ private void gatherData(final GatherDataEvent event) { ); } - public static ResourceLocation resLoc(final String path) { + public static ResourceLocation location(final String path) { return new ResourceLocation(MOD_ID, path); } diff --git a/src/main/java/maxhyper/dtphc2/blocks/BananaSuckerBlock.java b/src/main/java/maxhyper/dtphc2/blocks/BananaSuckerBlock.java index cc8902b..bfdec2b 100644 --- a/src/main/java/maxhyper/dtphc2/blocks/BananaSuckerBlock.java +++ b/src/main/java/maxhyper/dtphc2/blocks/BananaSuckerBlock.java @@ -85,7 +85,7 @@ public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, @Override public Item asItem() { - Item item = ForgeRegistries.ITEMS.getValue(DynamicTreesPHC2.resLoc("banana_seed")); + Item item = ForgeRegistries.ITEMS.getValue(DynamicTreesPHC2.location("banana_seed")); if (item == null) return Items.AIR; return item; } diff --git a/src/main/java/maxhyper/dtphc2/blocks/FruitVineBlock.java b/src/main/java/maxhyper/dtphc2/blocks/FruitVineBlock.java index 1924428..6a4e544 100644 --- a/src/main/java/maxhyper/dtphc2/blocks/FruitVineBlock.java +++ b/src/main/java/maxhyper/dtphc2/blocks/FruitVineBlock.java @@ -6,11 +6,13 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.BlockTags; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -61,7 +63,7 @@ public class FruitVineBlock extends VineBlock { public FruitVineBlock() { super(BlockBehaviour.Properties.of(Material.REPLACEABLE_PLANT).noCollission().randomTicks().strength(0.2F).sound(SoundType.VINE)); - this.registerDefaultState(this.stateDefinition.any().setValue(ageProperty, 0)); + this.registerDefaultState(defaultBlockState().setValue(ageProperty, 0)); } public void setAge(Level world, BlockPos pos, BlockState state, int age, boolean destroy) { @@ -275,7 +277,7 @@ public boolean canSupportAtFace(BlockGetter pLevel, BlockPos pPos, Direction pDi public static boolean isAcceptableNeighbour(BlockGetter pBlockReader, BlockPos pLevel, Direction pNeighborPos) { BlockState blockstate = pBlockReader.getBlockState(pLevel); - return Block.isFaceFull(blockstate.getCollisionShape(pBlockReader, pLevel), pNeighborPos.getOpposite()) || TreeHelper.isBranch(blockstate); + return Block.isFaceFull(blockstate.getCollisionShape(pBlockReader, pLevel), pNeighborPos.getOpposite()) || blockstate.is(BlockTags.LEAVES) || TreeHelper.isBranch(blockstate); } @Override diff --git a/src/main/java/maxhyper/dtphc2/canceller/DTPHC2TreeFeatureCanceller.java b/src/main/java/maxhyper/dtphc2/canceller/DTPHC2TreeFeatureCanceller.java new file mode 100644 index 0000000..c5bcdbc --- /dev/null +++ b/src/main/java/maxhyper/dtphc2/canceller/DTPHC2TreeFeatureCanceller.java @@ -0,0 +1,37 @@ +package maxhyper.dtphc2.canceller; + +import com.ferreusveritas.dynamictrees.api.worldgen.FeatureCanceller; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.WeightedPlacedFeature; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.RandomFeatureConfiguration; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; + +import java.util.Objects; +import java.util.Set; + +public class DTPHC2TreeFeatureCanceller extends FeatureCanceller { + + private final Class[] treeFeatureClasses; + + public DTPHC2TreeFeatureCanceller(final ResourceLocation registryName, Class... treeFeatureClass) { + super(registryName); + this.treeFeatureClasses = treeFeatureClass; + } + + @Override + public boolean shouldCancel(ConfiguredFeature configuredFeature, Set namespaces) { + Feature feature = configuredFeature.feature(); + if (namespaces.contains(Objects.requireNonNull(feature.getRegistryName()).getNamespace())) { + for (Class treeFeatureClass : treeFeatureClasses){ + if (treeFeatureClass.isInstance(feature)) + return true; + } + } + return false; + } + +} diff --git a/src/main/java/maxhyper/dtphc2/cells/DTPHC2CellKits.java b/src/main/java/maxhyper/dtphc2/cells/DTPHC2CellKits.java deleted file mode 100644 index 0a7da42..0000000 --- a/src/main/java/maxhyper/dtphc2/cells/DTPHC2CellKits.java +++ /dev/null @@ -1,382 +0,0 @@ -package maxhyper.dtphc2.cells; - -import com.ferreusveritas.dynamictrees.api.cell.CellKit; -import com.ferreusveritas.dynamictrees.api.registry.Registry; - -public class DTPHC2CellKits { - - public static void register(final Registry registry) { -// registry.registerAll(PALM, SPARSE, POPLAR, SMALL_DECIDUOUS, WILLOW, ROUND_CONIFER, SYTHIAN_FUNGUS); - } - -// public static final CellKit PALM = new CellKit(new ResourceLocation(DynamicTreesPHC2.MOD_ID, "palm")) { -// -// private final Cell palmBranch = new Cell() { -// @Override -// public int getValue() { -// return 5; -// } -// -// @Override -// public int getValueFromSide(Direction side) { -// return side == Direction.UP ? getValue() : 0; -// } -// -// }; -// -// private final Cell[] palmFrondCells = { -// CellNull.NULL_CELL, -// new PalmFrondCell(1), -// new PalmFrondCell(2), -// new PalmFrondCell(3), -// new PalmFrondCell(4), -// new PalmFrondCell(5), -// new PalmFrondCell(6), -// new PalmFrondCell(7) -// }; -// -// private final CellKits.BasicSolver palmSolver = new CellKits.BasicSolver(new short[]{0x0514, 0x0413, 0x0312, 0x0221}); -// -// @Override -// public Cell getCellForLeaves(int hydro) { -// return palmFrondCells[hydro]; -// } -// -// @Override -// public Cell getCellForBranch(int radius, int meta) { -// return radius == 3? palmBranch : CellNull.NULL_CELL; -// } -// -// @Override -// public SimpleVoxmap getLeafCluster() { -// return LeafClusters.PALM; -// } -// -// @Override -// public CellSolver getCellSolver() { -// return palmSolver; -// } -// -// @Override -// public int getDefaultHydration() { -// return 4; -// } -// -// }; -// -// public static final CellKit SPARSE = new CellKit(new ResourceLocation(DynamicTreesPHC2.MOD_ID, "sparse")) { -// -// private final Cell sparseBranch = new SparseBranchCell(); -// private final Cell sparseLeaves = new NormalCell(1); -// -// private final CellSolver solver = new CellKits.BasicSolver(new short[] {0x0211}); -// -// @Override -// public Cell getCellForLeaves(int hydro) { -// return hydro > 0 ? sparseLeaves : CellNull.NULL_CELL; -// } -// -// @Override -// public Cell getCellForBranch(int radius, int meta) { -// return radius == 1 ? sparseBranch : CellNull.NULL_CELL; -// } -// -// @Override -// public SimpleVoxmap getLeafCluster() { -// return DTPHC2LeafClusters.SPARSE; -// } -// -// @Override -// public CellSolver getCellSolver() { -// return solver; -// } -// -// @Override -// public int getDefaultHydration() { -// return 1; -// } -// -// }; -// -// public static final CellKit POPLAR = new CellKit(new ResourceLocation(DynamicTreesPHC2.MOD_ID, "poplar")) { -// -// private final Cell poplarBranch = new PoplarBranchCell(); -// private final Cell poplarTopBranch = new PoplarTopBranchCell(); -// private final Cell poplarUpperTrunk = new NormalCell(4); -// -// private final Cell[] poplarLeaves = new Cell[] { -// CellNull.NULL_CELL, -// new PoplarLeafCell(1), -// new PoplarLeafCell(2), -// new PoplarLeafCell(3), -// new PoplarLeafCell(4), -// }; -// -// private final CellSolver solver = new CellKits.BasicSolver(new short[] { -// 0x0412, 0x0311, 0x0211 -// }); -// -// @Override -// public Cell getCellForLeaves(int hydro) { -// return poplarLeaves[hydro]; -// } -// -// @Override -// public Cell getCellForBranch(int radius, int meta) { -// if (meta == MetadataCell.CONIFERTOP) return poplarTopBranch; -// if (radius == 1) return poplarBranch; -// if (radius < 4) return poplarUpperTrunk; -// return CellNull.NULL_CELL; -// } -// -// @Override -// public SimpleVoxmap getLeafCluster() { -// return DTPHC2LeafClusters.POPLAR; -// } -// -// @Override -// public CellSolver getCellSolver() { -// return solver; -// } -// -// @Override -// public int getDefaultHydration() { -// return 4; -// } -// -// }; -// -// public static final CellKit SMALL_DECIDUOUS = new CellKit(new ResourceLocation(DynamicTreesPHC2.MOD_ID, "small_deciduous")) { -// -// private final Cell sparseBranch = new NormalCell(4); -// private final Cell sparseLeaves = new NormalCell(1); -// -// private final CellSolver solver = new CellKits.BasicSolver(new short[] {0x0211}); -// -// @Override -// public Cell getCellForLeaves(int hydro) { -// return hydro > 0 ? sparseLeaves : CellNull.NULL_CELL; -// } -// -// @Override -// public Cell getCellForBranch(int radius, int meta) { -// return radius == 1 ? sparseBranch : CellNull.NULL_CELL; -// } -// -// @Override -// public SimpleVoxmap getLeafCluster() { -// return DTPHC2LeafClusters.SPARSE; -// } -// -// @Override -// public CellSolver getCellSolver() { -// return solver; -// } -// -// @Override -// public int getDefaultHydration() { -// return 1; -// } -// -// }; -// -// // TODO: Still needs some work. -// public static final CellKit WILLOW = new CellKit(DynamicTreesPHC2.resLoc("willow")) { -// -// private final Cell branch = new WillowBranchCell(); -// -// private final Cell[] willowLeafCells = { -// CellNull.NULL_CELL, -// new WillowLeafCell(1), -// new WillowLeafCell(2), -// new WillowLeafCell(3), -// new WillowLeafCell(4), -// new WillowLeafCell(5), -// new WillowLeafCell(6), -// new WillowLeafCell(7) -// }; -// -// private final CellKits.BasicSolver solver = new CellKits.BasicSolver(new short[]{0x0817, 0x0726, 0x0625, 0x0714, 0x0614, 0x0514, 0x0413, 0x0312, 0x0211}); -// -// @Override -// public Cell getCellForLeaves(int distance) { -// return this.willowLeafCells[distance]; -// } -// -// @Override -// public Cell getCellForBranch(int radius, int meta) { -// return radius == 1 ? this.branch : CellNull.NULL_CELL; -// } -// -// @Override -// public CellSolver getCellSolver() { -// return this.solver; -// } -// -// // TODO: Willow leaf cluster. -// @Override -// public SimpleVoxmap getLeafCluster() { -// return DTPHC2LeafClusters.WILLOW; -// } -// -// @Override -// public int getDefaultHydration() { -// return 7; -// } -// }; -// -// public static final CellKit ROUND_CONIFER = new CellKit(DynamicTreesPHC2.resLoc("round_conifer")) { -// -// private final Cell coniferBranch = new NormalCell(3); -// private final Cell coniferTopBranch = new ConiferTopBranchCell(); -// -// private final Cell[] coniferLeafCells = { -// CellNull.NULL_CELL, -// new ConiferLeafCell2(1), -// new ConiferLeafCell2(2), -// new ConiferLeafCell2(3), -// new ConiferLeafCell2(4), -// new ConiferLeafCell2(5), -// new ConiferLeafCell2(6), -// new ConiferLeafCell2(7) -// }; -// -// private final CellKits.BasicSolver coniferSolver = -// new CellKits.BasicSolver(new short[]{0x0514, 0x0413, 0x0312, 0x0221}); -// -// @Override -// public Cell getCellForLeaves(int hydro) { -// return coniferLeafCells[hydro]; -// } -// -// @Override -// public Cell getCellForBranch(int radius, int meta) { -// if (meta == MetadataCell.CONIFERTOP) { -// return coniferTopBranch; -// } else if (radius == 1) { -// return coniferBranch; -// } else { -// return CellNull.NULL_CELL; -// } -// } -// -// @Override -// public SimpleVoxmap getLeafCluster() { -// return DTPHC2LeafClusters.ROUND_CONIFER; -// } -// -// @Override -// public CellSolver getCellSolver() { -// return coniferSolver; -// } -// -// @Override -// public int getDefaultHydration() { -// return 4; -// } -// -// }; -// -// public static final CellKit BUSHY = new CellKit(DynamicTreesPHC2.resLoc("bushy")) { -// -// private final Cell branchCell = new BushyBranchCell(); -// private final Cell coniferTopBranch = new ConiferTopBranchCell(); -// -// private final Cell[] coniferLeafCells = { -// CellNull.NULL_CELL, -// new BushyLeafCell(1), -// new BushyLeafCell(2), -// new BushyLeafCell(3), -// new BushyLeafCell(4), -// new BushyLeafCell(5), -// new BushyLeafCell(6), -// new BushyLeafCell(7) -// }; -// -// private final CellKits.BasicSolver solver = new CellKits.BasicSolver(new short[]{0x0614, 0x0513, 0x0423, 0x0322, 0x0411, 0x0211}); -// -// @Override -// public Cell getCellForLeaves(int hydro) { -// return coniferLeafCells[hydro]; -// } -// -// @Override -// public Cell getCellForBranch(int radius, int meta) { -// if (meta == MetadataCell.CONIFERTOP) { -// return coniferTopBranch; -// } else if (radius == 1) { -// return branchCell; -// } else { -// return CellNull.NULL_CELL; -// } -// } -// -// @Override -// public SimpleVoxmap getLeafCluster() { -// return DTPHC2LeafClusters.BUSHY; -// } -// -// @Override -// public CellSolver getCellSolver() { -// return solver; -// } -// -// @Override -// public int getDefaultHydration() { -// return 4; -// } -// -// }; -// -// public static final CellKit SYTHIAN_FUNGUS = new CellKit(DynamicTreesPHC2.resLoc("sythian_fungus")) { -// -// private final Cell sythianBranch = new SythianWartCell(3); -// private final Cell sythianTopBranch = new SythianWartCell(5); -// -// private final Cell[] sythianLeafCells = { -// CellNull.NULL_CELL, -// new SythianWartCell(1), -// new SythianWartCell(2), -// new SythianWartCell(3), -// new SythianWartCell(4), -// new SythianWartCell(4), -// new SythianWartCell(4), -// new SythianWartCell(4) -// }; -// -// private final CellKits.BasicSolver sythianSolver = new CellKits.BasicSolver(new short[]{0x0514, 0x0411, 0x0312, 0x0221}); -// -// @Override -// public Cell getCellForLeaves(int hydro) { -// return sythianLeafCells[hydro]; -// } -// -// @Override -// public Cell getCellForBranch(int radius, int meta) { -// if (meta == MetadataCell.CONIFERTOP) { -// return sythianTopBranch; -// } else if (radius == 3){ -// return sythianBranch; -// } else { -// return CellNull.NULL_CELL; -// } -// } -// -// @Override -// public SimpleVoxmap getLeafCluster() { -// return DTPHC2LeafClusters.SYTHIAN_FUNGUS; -// } -// -// @Override -// public CellSolver getCellSolver() { -// return sythianSolver; -// } -// -// @Override -// public int getDefaultHydration() { -// return 4; -// } -// -// }; - -} diff --git a/src/main/java/maxhyper/dtphc2/cells/DTPHC2LeafClusters.java b/src/main/java/maxhyper/dtphc2/cells/DTPHC2LeafClusters.java deleted file mode 100644 index 291ee5c..0000000 --- a/src/main/java/maxhyper/dtphc2/cells/DTPHC2LeafClusters.java +++ /dev/null @@ -1,131 +0,0 @@ -package maxhyper.dtphc2.cells; - -public class DTPHC2LeafClusters { - -// public static final SimpleVoxmap SPARSE = new SimpleVoxmap(3, 2, 3, new byte[] { -// 0, 1, 0, -// 1, 0, 1, -// 0, 1, 0, -// -// 0, 0, 0, -// 0, 1, 0, -// 0, 0, 0 -// }).setCenter(new BlockPos(1, 0, 1)); -// -// public static final SimpleVoxmap POPLAR = new SimpleVoxmap(3, 4, 3, new byte[] { -// 0, 0, 0, -// 0, 1, 0, -// 0, 0, 0, -// -// 0, 2, 0, -// 2, 0, 2, -// 0, 2, 0, -// -// 0, 1, 0, -// 1, 2, 1, -// 0, 1, 0, -// -// 0, 0, 0, -// 0, 1, 0, -// 0, 0, 0 -// }).setCenter(new BlockPos(1, 1, 1)); -// -// public static final SimpleVoxmap POPLAR_TOP = new SimpleVoxmap(3, 3, 3, new byte[] { -// 0, 1, 0, -// 1, 0, 1, -// 0, 1, 0, -// -// 0, 0, 0, -// 0, 2, 0, -// 0, 0, 0, -// -// 0, 0, 0, -// 0, 1, 0, -// 0, 0, 0 -// }).setCenter(new BlockPos(1, 0, 1)); -// -// public static final SimpleVoxmap WILLOW = new SimpleVoxmap(5, 4, 5, new byte[]{ -// //Layer 0 (Bottom) -// 0, 0, 0, 0, 0, -// 0, 1, 1, 1, 0, -// 0, 1, 1, 1, 0, -// 0, 1, 1, 1, 0, -// 0, 0, 0, 0, 0, -// -// //Layer 1 -// 0, 1, 1, 1, 0, -// 1, 3, 4, 3, 1, -// 1, 4, 0, 4, 1, -// 1, 3, 4, 3, 1, -// 0, 1, 1, 1, 0, -// -// //Layer 2 -// 0, 1, 1, 1, 0, -// 1, 2, 3, 2, 1, -// 1, 3, 4, 3, 1, -// 1, 2, 3, 2, 1, -// 0, 1, 1, 1, 0, -// -// //Layer 3(Top) -// 0, 0, 0, 0, 0, -// 0, 1, 1, 1, 0, -// 0, 1, 1, 1, 0, -// 0, 1, 1, 1, 0, -// 0, 0, 0, 0, 0 -// -// }).setCenter(new BlockPos(2, 1, 2)); -// -// public static final SimpleVoxmap ROUND_CONIFER = new SimpleVoxmap(3, 2, 3, new byte[] { -// 1, 2, 1, -// 2, 0, 2, -// 1, 2, 1, -// -// 0, 1, 0, -// 1, 1, 1, -// 0, 1, 0 -// }).setCenter(new BlockPos(1, 0, 1)); -// -// public static final SimpleVoxmap BUSHY = new SimpleVoxmap(5, 5, 5, new byte[]{ -// //Layer 0(Bottom) -// 0, 0, 0, 0, 0, -// 0, 1, 1, 1, 0, -// 0, 1, 1, 1, 0, -// 0, 1, 1, 1, 0, -// 0, 0, 0, 0, 0, -// -// //Layer 1 (Bottom-Middle) -// 0, 1, 1, 1, 0, -// 1, 2, 3, 2, 1, -// 1, 3, 4, 3, 1, -// 1, 2, 3, 2, 1, -// 0, 1, 1, 1, 0, -// -// //Layer 2 (Middle) -// 0, 1, 1, 1, 0, -// 1, 3, 4, 3, 1, -// 1, 4, 0, 4, 1, -// 1, 3, 4, 3, 1, -// 0, 1, 1, 1, 0, -// -// //Layer 3 (Top-Middle) -// 0, 0, 1, 0, 0, -// 0, 1, 2, 1, 0, -// 1, 2, 3, 2, 1, -// 0, 1, 2, 1, 0, -// 0, 0, 1, 0, 0, -// -// //Layer 4 (Top) -// 0, 0, 0, 0, 0, -// 0, 0, 1, 0, 0, -// 0, 1, 1, 1, 0, -// 0, 0, 1, 0, 0, -// 0, 0, 0, 0, 0 -// }).setCenter(new BlockPos(2, 2, 2)); -// -// public static final SimpleVoxmap SYTHIAN_FUNGUS = new SimpleVoxmap(3, 1, 3, new byte[] { -// 1, 2, 1, -// 2, 0, 2, -// 1, 2, 1 -// }).setCenter(new BlockPos(1, 0, 1)); - -} diff --git a/src/main/java/maxhyper/dtphc2/compat/waila/WailaVineHandler.java b/src/main/java/maxhyper/dtphc2/compat/waila/WailaVineHandler.java index 62006c1..b3cfaa7 100644 --- a/src/main/java/maxhyper/dtphc2/compat/waila/WailaVineHandler.java +++ b/src/main/java/maxhyper/dtphc2/compat/waila/WailaVineHandler.java @@ -17,8 +17,7 @@ public class WailaVineHandler implements IComponentProvider { @Override public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfig iPluginConfig) { if (accessor.getTooltipPosition() != TooltipPosition.BODY) return; - if (accessor.getBlock() instanceof FruitVineBlock) { - FruitVineBlock fruitBlock = (FruitVineBlock) accessor.getBlock(); + if (accessor.getBlock() instanceof FruitVineBlock fruitBlock) { float ageAsPercentage = fruitBlock.getAge(accessor.getBlockState()) * 100F / fruitBlock.getMatureAge(); tooltip.add(new TranslatableComponent( "tooltip.waila.crop_growth", diff --git a/src/main/java/maxhyper/dtphc2/genfeatures/DTPHC2GenFeatures.java b/src/main/java/maxhyper/dtphc2/genfeatures/DTPHC2GenFeatures.java index 0fe4652..60ff484 100644 --- a/src/main/java/maxhyper/dtphc2/genfeatures/DTPHC2GenFeatures.java +++ b/src/main/java/maxhyper/dtphc2/genfeatures/DTPHC2GenFeatures.java @@ -6,12 +6,12 @@ public class DTPHC2GenFeatures { - public static final GenFeature BANANA_FRUIT = new BananaFruitGenFeature(DynamicTreesPHC2.resLoc("banana_fruit")); - public static final GenFeature DRAGON_FRUIT_FRUIT = new DragonFruitFruitGenFeature(DynamicTreesPHC2.resLoc("dragon_fruit_fruit")); - public static final GenFeature PALM_FRUIT = new PalmFruitGenFeature(DynamicTreesPHC2.resLoc("palm_fruit")); - public static final GenFeature SYRUP_GEN = new SyrupGenFeature(DynamicTreesPHC2.resLoc("syrup")); - public static final GenFeature PLANT_SUCKERS = new PlantSuckerGenFeature(DynamicTreesPHC2.resLoc("plant_suckers")); - public static final GenFeature TRUNK_VINES = new VinesInTrunkGenFeature(DynamicTreesPHC2.resLoc("trunk_vines")); + public static final GenFeature BANANA_FRUIT = new BananaFruitGenFeature(DynamicTreesPHC2.location("banana_fruit")); + public static final GenFeature DRAGON_FRUIT_FRUIT = new DragonFruitFruitGenFeature(DynamicTreesPHC2.location("dragon_fruit_fruit")); + public static final GenFeature PALM_FRUIT = new PalmFruitGenFeature(DynamicTreesPHC2.location("palm_fruit")); + public static final GenFeature SYRUP_GEN = new SyrupGenFeature(DynamicTreesPHC2.location("syrup")); + public static final GenFeature PLANT_SUCKERS = new PlantSuckerGenFeature(DynamicTreesPHC2.location("plant_suckers")); + public static final GenFeature TRUNK_VINES = new VinesInTrunkGenFeature(DynamicTreesPHC2.location("trunk_vines")); public static void register(final Registry registry) { registry.registerAll(BANANA_FRUIT, DRAGON_FRUIT_FRUIT, PALM_FRUIT, SYRUP_GEN, PLANT_SUCKERS, TRUNK_VINES); diff --git a/src/main/java/maxhyper/dtphc2/init/DTPHC2Registries.java b/src/main/java/maxhyper/dtphc2/init/DTPHC2Registries.java index fe426c0..82975af 100644 --- a/src/main/java/maxhyper/dtphc2/init/DTPHC2Registries.java +++ b/src/main/java/maxhyper/dtphc2/init/DTPHC2Registries.java @@ -1,6 +1,6 @@ package maxhyper.dtphc2.init; -import com.ferreusveritas.dynamictrees.api.cell.CellKit; +import com.ferreusveritas.dynamictrees.api.registry.RegistryEvent; import com.ferreusveritas.dynamictrees.api.registry.TypeRegistryEvent; import com.ferreusveritas.dynamictrees.api.worldgen.FeatureCanceller; import com.ferreusveritas.dynamictrees.block.leaves.LeavesProperties; @@ -10,9 +10,10 @@ import com.ferreusveritas.dynamictrees.tree.family.Family; import com.ferreusveritas.dynamictrees.tree.species.Species; import com.ferreusveritas.dynamictrees.util.CommonVoxelShapes; +import com.pam.pamhc2trees.worldgen.*; import maxhyper.dtphc2.DynamicTreesPHC2; -import maxhyper.dtphc2.blocks.*; -import maxhyper.dtphc2.cells.DTPHC2CellKits; +import maxhyper.dtphc2.blocks.DragonFruitLeavesProperties; +import maxhyper.dtphc2.canceller.DTPHC2TreeFeatureCanceller; import maxhyper.dtphc2.fruits.*; import maxhyper.dtphc2.genfeatures.DTPHC2GenFeatures; import maxhyper.dtphc2.trees.FruitLogSpecies; @@ -33,7 +34,7 @@ @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD) public class DTPHC2Registries { - public static final TagKey CAN_BE_SPILED = TagKey.create(Registry.BLOCK_REGISTRY, DynamicTreesPHC2.resLoc("can_be_spiled")); + public static final TagKey CAN_BE_SPILED = TagKey.create(Registry.BLOCK_REGISTRY, DynamicTreesPHC2.location("can_be_spiled")); public static final DeferredRegister SOUNDS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, DynamicTreesPHC2.MOD_ID); @@ -49,42 +50,42 @@ public class DTPHC2Registries { public static final RegistryObject FRUIT_BONK = registerSound("falling_fruit.bonk"); public static void setup() { - CommonVoxelShapes.SHAPES.put(DynamicTreesPHC2.resLoc("dragon_fruit_cactus").toString(), DRAGON_FRUIT_CACTUS_SAPLING_SHAPE); - CommonVoxelShapes.SHAPES.put(DynamicTreesPHC2.resLoc("banana_sapling").toString(), BANANA_SAPLING_SHAPE); + CommonVoxelShapes.SHAPES.put(DynamicTreesPHC2.location("dragon_fruit_cactus").toString(), DRAGON_FRUIT_CACTUS_SAPLING_SHAPE); + CommonVoxelShapes.SHAPES.put(DynamicTreesPHC2.location("banana_sapling").toString(), BANANA_SAPLING_SHAPE); } public static RegistryObject registerSound (String name){ - return SOUNDS.register(name, ()-> new SoundEvent(DynamicTreesPHC2.resLoc(name))); + return SOUNDS.register(name, ()-> new SoundEvent(DynamicTreesPHC2.location(name))); } @SubscribeEvent public static void registerFruitType(final TypeRegistryEvent event) { - event.registerType(DynamicTreesPHC2.resLoc("offset_down"), OffsetFruit.TYPE); - event.registerType(DynamicTreesPHC2.resLoc("falling_fruit"), FallingFruit.TYPE); - event.registerType(DynamicTreesPHC2.resLoc("cobweb"), CobwebFruit.TYPE); + event.registerType(DynamicTreesPHC2.location("offset_down"), OffsetFruit.TYPE); + event.registerType(DynamicTreesPHC2.location("falling_fruit"), FallingFruit.TYPE); + event.registerType(DynamicTreesPHC2.location("cobweb"), CobwebFruit.TYPE); } @SubscribeEvent public static void registerPodType(final TypeRegistryEvent event) { - event.registerType(DynamicTreesPHC2.resLoc("palm"), PalmPod.TYPE); - event.registerType(DynamicTreesPHC2.resLoc("falling_palm"), FallingPalmPod.TYPE); + event.registerType(DynamicTreesPHC2.location("palm"), PalmPod.TYPE); + event.registerType(DynamicTreesPHC2.location("falling_palm"), FallingPalmPod.TYPE); } @SubscribeEvent public static void registerLeavesPropertiesType(final TypeRegistryEvent event) { - event.registerType(DynamicTreesPHC2.resLoc("dragon_fruit"), DragonFruitLeavesProperties.TYPE); + event.registerType(DynamicTreesPHC2.location("dragon_fruit"), DragonFruitLeavesProperties.TYPE); } @SubscribeEvent public static void registerFamilyType(final TypeRegistryEvent event) { - event.registerType(DynamicTreesPHC2.resLoc("paperbark"), PaperbarkFamily.TYPE); + event.registerType(DynamicTreesPHC2.location("paperbark"), PaperbarkFamily.TYPE); } @SubscribeEvent public static void registerSpeciesType(final TypeRegistryEvent event) { - event.registerType(DynamicTreesPHC2.resLoc("fruit_log"), FruitLogSpecies.TYPE); - event.registerType(DynamicTreesPHC2.resLoc("generates_on_extra_soil"), GenOnExtraSoilSpecies.TYPE); + event.registerType(DynamicTreesPHC2.location("fruit_log"), FruitLogSpecies.TYPE); + event.registerType(DynamicTreesPHC2.location("generates_on_extra_soil"), GenOnExtraSoilSpecies.TYPE); } @SubscribeEvent @@ -92,14 +93,12 @@ public static void onGenFeatureRegistry (final com.ferreusveritas.dynamictrees.a DTPHC2GenFeatures.register(event.getRegistry()); } - @SubscribeEvent - public static void onCellKitRegistry (final com.ferreusveritas.dynamictrees.api.registry.RegistryEvent event) { - DTPHC2CellKits.register(event.getRegistry()); - } + public static final FeatureCanceller TREE_CANCELLER = new DTPHC2TreeFeatureCanceller(DynamicTreesPHC2.location("tree"), + ColdFruitTreeFeature.class, ColdLogFruitTreeFeature.class, TemperateFruitTreeFeature.class, WarmFruitTreeFeature.class, WarmLogFruitTreeFeature.class); @SubscribeEvent - public static void onFeatureCancellerRegistry(final com.ferreusveritas.dynamictrees.api.registry.RegistryEvent event) { - + public static void onFeatureCancellerRegistry(final RegistryEvent event) { + event.getRegistry().registerAll(TREE_CANCELLER); } } diff --git a/src/main/resources/assets/dtphc2/lang/en_us.json b/src/main/resources/assets/dtphc2/lang/en_us.json index 5ce6843..7096946 100644 --- a/src/main/resources/assets/dtphc2/lang/en_us.json +++ b/src/main/resources/assets/dtphc2/lang/en_us.json @@ -139,5 +139,7 @@ "item.pamhc2trees.coconutitem": "Coconut Slice", "item.pamhc2trees.maplesyrupitem": "Maple Syrup", - "item.pamhc2trees.eucalyptusitem": "Eucalyptus Leaves" + "item.pamhc2trees.eucalyptusitem": "Eucalyptus Leaves", + "item.pamhc2trees.starfruititem": "Starfruit Slice", + "item.pamhc2trees.vanillabeanitem": "Vanilla Beans" } \ No newline at end of file diff --git a/src/main/resources/data/dtphc2/loot_tables/blocks/banana.json b/src/main/resources/data/dtphc2/loot_tables/blocks/banana.json index 59200a5..19412d1 100644 --- a/src/main/resources/data/dtphc2/loot_tables/blocks/banana.json +++ b/src/main/resources/data/dtphc2/loot_tables/blocks/banana.json @@ -9,7 +9,7 @@ "conditions": [ { "condition": "minecraft:block_state_property", - "block": "dtphc2:banana_fruit", + "block": "dtphc2:banana", "properties": { "age": "3" } @@ -40,10 +40,5 @@ } ] } - ], - "functions": [ - { - "function": "minecraft:explosion_decay" - } ] } \ No newline at end of file diff --git a/src/main/resources/data/dtphc2/loot_tables/blocks/pistachio.json b/src/main/resources/data/dtphc2/loot_tables/blocks/pistachio.json index 0ab072e..64c6389 100644 --- a/src/main/resources/data/dtphc2/loot_tables/blocks/pistachio.json +++ b/src/main/resources/data/dtphc2/loot_tables/blocks/pistachio.json @@ -9,7 +9,7 @@ "conditions": [ { "condition": "minecraft:block_state_property", - "block": "dtphc2:pistachio_fruit", + "block": "dtphc2:pistachio", "properties": { "age": "3" } @@ -40,10 +40,5 @@ } ] } - ], - "functions": [ - { - "function": "minecraft:explosion_decay" - } ] } \ No newline at end of file diff --git a/src/main/resources/data/dtphc2/loot_tables/blocks/starfruit.json b/src/main/resources/data/dtphc2/loot_tables/blocks/starfruit.json index 96acb45..f4c2e1a 100644 --- a/src/main/resources/data/dtphc2/loot_tables/blocks/starfruit.json +++ b/src/main/resources/data/dtphc2/loot_tables/blocks/starfruit.json @@ -9,7 +9,7 @@ "conditions": [ { "condition": "minecraft:block_state_property", - "block": "dtphc2:starfruit_fruit", + "block": "dtphc2:starfruit", "properties": { "age": "3" } @@ -40,10 +40,5 @@ } ] } - ], - "functions": [ - { - "function": "minecraft:explosion_decay" - } ] } \ No newline at end of file diff --git a/src/main/resources/trees/dtphc2/jo_codes/eucalyptus.txt b/src/main/resources/trees/dtphc2/jo_codes/eucalyptus.txt new file mode 100644 index 0000000..8661e47 --- /dev/null +++ b/src/main/resources/trees/dtphc2/jo_codes/eucalyptus.txt @@ -0,0 +1,140 @@ +8:JJJxJJxOOOZ9+Sx68mPz+Xnzzx789yXuPvbz89uXv +8:JJxJJxJJxxxx7+tvkx+Xnzzx+fnt6WPXmS8nbz89uXv +8:JJxJJxJJxJOWM6y+vn1x+b9vmePfmPnSXty97efn +8:JJOJJOJJzxx87f1xPyXufvmWPXmPz88yXk7efn +8:JxJJxJJxzxPzf1vk6xx8+S9vmS8nty97efn +8:JJOJJOJJOJJzxPefvyxPyXnuPufy98yXk6S9uXv +8:JJxJJxJJJJOeOPnef18+WJ6X1xPufy98mPy87efnty9 +8:JJJxJJxJJJxuL9+eePfvyq8mPz+XnSXmXk +8:JJxJJxJOeJ7fyWPy+vn1xx69vmOPXmfy88k6S +8:JJJxJJxJJxJzOPfyWPX1xPuXvmJ8z89uXvmS8nSX +8:JJJxJJxJJzxx97z+vnyWPy+vn1uPz+XvmOPXmfy88yXk6S +8:JxJJxJJxJzxPefvyxPWX18+uJ9y98OPnbz86S8yXk +8:JJxJJxJJxM+bz9+Sx+Xv1uPy98mPy86S8y8n +8:JJxJJxJJxJxxXj+bx+f189uPy99uXvSXmXk +8:JJOJJOJJOJOeJ+b9vyyy89x98xXmfy86S8yXk7efn +8:JJxJJxJJxJxPzePz+vnyWPy+vn1uPy98mPy89t6S8yXk +8:JOJJOJJOuePfyx69x98xx+fXmfy86S7efn +8:JxJJxJJxJJOPzzx+fvmPnyyx+XvmPntx+fy99uXvmS8nSX +8:JJJxJJJzxx+vnef18+WOP186y9+tx+Xvkx+fnmS8n +8:JJJxJJxJxOK+fvzePfyWPy+vn1uPz98mPnknSX +7:JJOJJOJJxOPy8fzzx79vyyx+Xnp8mPnmS8nbz8 +7:JOJJOJJOJJzePz+vnyxPy98xx78y87efnty98yXk +7:JxJJJJOJyP1J8fzePz8+Sx+Xv1ufvkx89uXv +7:JJJxJJxxzxPzfnWJ+S9+ub9x98y8x+fnbfty9 +7:JOJJOJJObx+fn1OPz+XvmOPz68z+Xnty98yXk +7:JOJJOJJOJOJ+b+uXufvkfmS8nSXbz8 +7:JJxJJxJJzxx87z9+WOPnWX18+uJ9z+Xvkz+XnmS8nSX +7:JJOJJOJJOOWJ6XuJ+b9y98yXk6S9uXv +7:JJxJJxJJzxPef18+uJ+S9z98xx86y86S8yXk +7:JJxJJxJOJx+Xj+bx+fvyyx+Xvk9uPz+XvmXk6S +7:JxJJxJJJxuK9vzzx+fnvyyx+Xnvkx+fy86S8y8n +7:JJOJJOJJOJOPzePz+vnyWX18+tx+fy98mPz+XnSXmS8nbz8 +7:JJJxJJxx1xPfmK8y8+cz86WPy98yXk6S +7:JJxJJxJJxOJx+fy8+bx+fn1yx69x+fvmS8x+fnSXty97efn +7:JJOJJOJOeJ7z+vn1xx69z98xPyXmfnknbz8 +7:JJOJJOJJOJOLx7z9+Sx+vn1z9x98mPz86S8yXk7efn +7:JxJJxJJJOOOPz+Xvmfy8+bx+f18+Sx69uPvbz89uXv +7:JJxJJxJJxxOf18nSx+Xnzef18+uS9x78mPz+Xnbz89uXv +7:JJOJJOJOOOPz+vi6WPy8+bx+f18+uS9x+fvmXmPz88k7efn +7:JJJxJJxJxOfyP1t8+bx+fvyWPy+vn18mPnmS8nSX +6:JOJJOJJOJJOOWWPy898xx6+b8nty96S8yXk9uXv +6:JJJxJJxOOOK+uXvnzfX1z9y98yXmPnty97efn +6:JJJxJJxJJzxPzz98nyyx68nuOPXt6S8yXk +6:JJxJJxJJxJOLx7+Sx+X18+ub9x+Xvmb8x+Xnknbz89uXv +6:JJJxJJxJJxJzxPef18+Sx+Xn1xXufy98x8z+XniXty97efn +6:JJxJJxJJxOeePz98x8+WWPy98x89xz69z+XvSXty97efn +6:JJOJJOJJJxxxny97Z+Sx6+ub9x98z8y88yXk7efn +6:JJOJJOJJOOON+fXq+eb9vyWPy88mPnmS8nbz8 +6:JxJJxJJxJJxxz+vnWWPXvzePz8+tx+XvmS8x+fnSXbz89uXv +6:JxJJxJJxxxxb9fWXv1zfuPy98mPy87efnSXmS8n +6:JJxJJxJOeJ7z9+uJ+S9z98xPyXmfnmS8nSX +6:JJOJJOJJOJOPzzx+fnuPvyWPy+vnkx+fnty97efnmS8n +6:JJOJJOJJOOOKy87fWS9+eefnuPvmXmPz87efnmS8n +6:JJOJJOJJOOOfyvh9uPz6+eePz89+WWPXvkx+fy86S9uXv +6:JxJJxJJxJJxxzfy9t8z+S8x89uXvbz86S8yXk +6:JJxJJxJJxxxx8fWWPXuPvzuPz98yXmPz89uXvSXmS8n +6:JJJxJJxzxPzft+WOPvWXvmJ8z89uXvbz8 +6:JOJJOJJJxxzny98nzePz9+WWPy98ntx+fy99uXvmS8n +6:JxJJxJJxJJxyxPWXv1xPzft8xPz8nbz89uXvmS8nSX +6:JJJxJJxJxxxvzvy89uPvzzx79+WWPy89vkx+XnSXmS8n +5:JOJJJJJxOJx+X18+bx+fnyWPX1uPvkx+Xnknbf +5:JOJJJJJJJOPzePz+vnyWP18+tx+fvkx+fy86S +5:JJJJJJJJxJyOPX1xx79z98xPzfmXnbf +5:JJJJJJOeOPnb+WJ6y9+uPufvky8 +5:JJOJJOJJOOOON+d+XnuS9x9+dz98yx68x86S8y8nbz8 +5:JJJJJJJzxx87z+vn1xPyXufvmWPXmPz8 +5:JJJJJJJJJx+bx+f18+Sx+X18+tx+fy98mPz8 +5:JJJJJJJJOJz+R+p8PzePz9+Sx+X18+tx+Xvkx+fy8 +5:JJxJJxJJxOOOp87b+Sx+Xn18zfmPy87efniXSX +5:JJJJJxObx+fvyxPyXt8xx78nSX +5:JJJJJJJJxOOSx69xfufXzzx+fnvmXmPz87b +5:JJJJJJJJJxzfSx6+ub+S9Pmb+S8x8 +5:JJJJJJJzxPef18+uJ+S9vmOPXmfy8 +5:JOJJJJJxxxx+c96WPy8+bx+fv1yXuPvkx86S9t +5:JJJJJJJJJObx+f18+WJ6X1xfufy98xx78y8 +5:JOJJJJJxxxPzvnSx+XnzePz9+uS9x98y8x88S +5:JxJJJJOOZx+fv1yXuPz98xPyXmfnSXty9 +5:JJJJJJJJJx+bx+f18+Sx+X18+tx+fy98mPz+Xn +5:JxJJJJJJzxPzft+WOPy89y98mPz+XniX +5:JJJJJJJxOM+cny9+bx+fvyWPy8+tx98mPy8 +4:JxJJJJJJJOOfnyWXvrvbf +4:JJJJJJJxOPzfy+vnz+Sx6+tx+Xvkx8 +4:JOJJJJOePzz89+WWXnp8xPk9t +4:JJJJJJzxx9+b8nyWPy+vntx+fy9 +4:JJJJJJJJJOWPWXv1x7vmJ+b8 +4:JJJJJJJJJzxPb+WJ6y9+uPufy98J +4:JOJJJJJJJOePevnyOPv1uPfmJ8z87b +4:JJJJJJJJzePz8+WJ6y+vn1xx79z+XvmOPfmfy8 +4:JOJJJJJxOfyWPX1r8xPmXnvSX +4:JxJJJJJJJxxy+vneb8+WWPXmPnufuPy98S +4:JJJJJJJxOMPzz8+U9+Sx+Xn1uPvkn +4:JxJJJJOOeb8+WOPnXuOPfvmS8nbf +4:JJJJJJOOOPz68Xzzx+fvk9yPuPz9 +4:JJJJJOOOOL+SXvz8mfXyXrfmS8n +4:JJJJJJxOPz+SP18+bx+fn1yx69x+fvmWPXmPz8 +4:JxJJJJJJObx+fvyWPy9+uJ9XmL8z86S +4:JxJJJJJOJfzePz9+Sy+vn1uPz+Xvkx+fy87b +4:JOJJJJJJJxXzZ+uXufvkXbf +4:JJJJJJJOOWJ+S98mPfzzx+fvntx+fv +4:JxJJJJJJJxOR+tfmfk8k9uXv +3:JJJJJJOJx+X1fnzZ+Sx8+t8h +3:JJJJJJJOOOK7vyy8PvzzPt8mPX +3:JJJJJJOeePvk+WJ+V89xx79z6 +3:JJJJJJJOONfyyPt8i+eZ8nt +3:JJJJJJxxxX1Z87z8+uWPXp8yXmPf +3:JJJJJJJJxxzx968h+eePvk+WR8ntx7 +3:JJJJJJJJyxx86+uJ+b9XmePfh +3:JJJJJJJxx1fmPXeZ8nyR+ub9PkX +3:JJJJJJOOOJ+fnuXuPfzZ8mPf +3:JJJJJJJOOOPy+r8nbx9+WR89uPX +3:JJJJJJJJJzOPvyyPuPvmOPXi +3:JJJJJJJJxxx+f1vnS+bx9+vmS8x7 +3:JJJJJJJJJxzx7+WR98ntX +3:JJJJJJxxy89+ec9+WR9vkx6 +3:JJJJJJJJOOOfy98z+XnzePnyWP189uPz6 +3:JJJJJJJJJyxvWvn1zfp8xPzfi +3:JJJJJJJJJzx718+WPy98xPi +3:JJJJJJJJJxWXnzeP18+uS9x78mPz6 +3:JJJJJJJxOr8fzeP18+Sx9+tx78h +3:JJJJJJOJzPvzZ+Sx8+tPkx6 +2:JJJJJJJJxxx767 +2:JJJJJJJJJOZPyJ+pPhP +2:JJJJJJJJJOZPyOPv18J +2:JJJJJJOJznvz+X18 +2:JJJJJJOJx+X18+dPyp8 +2:JJJJJJxzJ6nn +2:JJJJJJOJx+U9+fy+vn +2:JJJJJJJzJ+R+pPhP +2:JJJJJJxxx+r8+c6v1fi +2:JJJJJJJOZPyP1J8J +2:JJJJJJJxxxPfyp8fdP +2:JJJJJJxxxy897189 +2:JJJJJJJJJOZ+R+pPhP +2:JJJJJJJxxx+vnznWvnv +2:JJJJJJJJOOMPzvWp89 +2:JJJJJJJzJ+RP1J8J +2:JJJJJJOOuPz68x7+fU +2:JJJJJJOOOP18+fX1z68X +2:JJJJJJxxx+d89Xz+Xn +2:JJJJJJxOM6+fiP diff --git a/src/main/resources/trees/dtphc2/jo_codes/mesquite.txt b/src/main/resources/trees/dtphc2/jo_codes/mesquite.txt new file mode 100644 index 0000000..856e763 --- /dev/null +++ b/src/main/resources/trees/dtphc2/jo_codes/mesquite.txt @@ -0,0 +1,140 @@ +8:JJxxxzOJx8+f1XkfWJOJJ+X1898z+XmKPkPSxqx6+SyXnkx8+bxxePfvz89uGfvxzOPefuPvuRnuJ96WPX +8:JJxxxxxxPfnznXnyRWvh9uJOJPXzftPzeJvz+vnkxePfy8mPc +8:JJxhxxy8x89vz+XknzzxOJ+fveHz8nnyWJxxvny9+Sx+Xn189ueOJx797Z+RxP189uPzeHb9t +8:JJxxxWOPny9vzeN718+vi6Xzf1y9NxXfmWHWXnmOePz868 +8:JJxOZx7+WPSn1J8Jxx98+eePzzL989x9y9xx6vz9+SHkx+fmSPmPk +8:JJzxmOOOL6+vnfmfh7zx1OOXnvneePznvk+vnyOWRx+Xnp8xM8yXmPn1xOOJ6vz+tx6XnuGHXzPuXp8k +8:JJxxxxxx+vj+efvXmb6+fqxV9+SyxxPvnt8z8hPzePz+vkJ9y9x+ftf +8:JJxxxxxxx+b86R8nzzfk+WWXp8ntxKx9+fvnzzeHn1PnWSXn1yWXvuGHy9+OR1Xnufp78mPzfyXn +8:JJxxxxxxWP188nzZ9yRXuPzfvXjM9R+eeOLN8hneHzx7z8n189uJt+fvyWWOOK+fvnX188mKOPU+fiy8 +8:JJxxxxWPvvb9z+XvzfyWJ+XvkxPn +8:JJxxOJxPz+vnzeP18+Sxx86+vkxXfyXtwWvnx+bN9uR9fzzxeLx+fnvnoeHc8y8Ofyx68xfn +8:JJxxxxxPy+vnefvyy9PntxPz+Xvzzwvx18nfvyWWKno8xfkx78hn +8:JJxxxxxxx8+XvzfkzfnyyXntx671vmPz8+S9vzzxvzzx7zPh98nt8y8xR8n +8:JJxxxxxyP1xPb8xnfbnyV9fmZ6+XufuL+Svvz8yWPyy8PvmOefnUPkx+efnX +8:JJxOOOOOPnyXr+b86+ebPuLvvmSPkxyx687+bzwnePf1x98mZ8+Syx6X1J8+tx+XtPkn +8:JJxOOOOOvnfyX1uPfkxXz87eE7+UXvzeeM7z9PnyWPywq+XmK8nv1ueJffy9OJ68mOPnz6 +8:JJyxOKyxx96+vhPnSyx69P1xxOOOPr8nc7zx7efvp9uOOOPvXt+fXmLPmbOJPz8nyRM8mJx7+fy8 +8:JJxOOOOJ+fX1z6yHo8mPfbb+q8z6PzZ+SyxJ6+pvmPn1uLx7+Xufvn +8:JJxOOeeJ786xPy+vn1zft8mPmfXz+SwnRP18n +8:JJxOJxx6+b+uXvmXnyWS8+vnzZzL+vn1yx69x+bvtxPfmWPXmPz8yPmJ8 +7:JJOJxxxx8+b6189+d8XzePzePfnyWJxnvy+vn1uNx+fvz68hz8M +7:JJxxxOOXpxx8+fy9+fn1yWJ99x+fvmRXmPmS8PzeeePd9Ph6WA+Rx68+ub+XuGHfq8cx8 +7:JJxxxxxyR+uPfmL8fc8+WRR89pPzzxxz89+d8h9tPkx+XmZ8nyyyyx68Pp89uXv +7:JJxxxOJxOPz+Xk+X18+bxx+vk7+Sw8+tWXvknzpvyuPWXvntx+fvzzx1Z8OPfeZPnvyyx+Xnty98mOSy88z8x67c +7:JJzxxxJx77f1bfkPeA+fk+RxOPy+vk+X18+txxx+fnt+b68mXmD5y8 +7:JJxxxzOeJ7+tXnyxxx+fvXuXvkxR+fnvzuZx99y9Pyyx+XnvkR9 +7:JJxxxxxxxxnfU9+bny8mHz8Prp+b1vnyWHxU8k89z+XuKXuS9p+bzxnb+tvny8mPz+XkM +7:JJxOOOOOM6+b96y9vmbzfny8Hz+Xvzzx+fvmPk+WSxPyU+t8hPmKPk9uNPz6 +7:JJxxxxxxx+fXqvmXhx8+Syx6897Zzx78PWXvzeePcf1N8M+txOZ6Pz+Xtxx+b96XmS8xxnXz8 +7:JJxxxxOJz6Pz+Xvzz896yxPy89+bw+fp+txfyXt8mOJffy86y8 +7:JJxxxOOf1y9PmM66+c6R8yXmJL8nzzxk7zw+fvnknyWHWN6w+XntxOft+bx79yPubfpX +7:JJzbxOOPznynvk7zw7+p8x8+WJ6wX1x+XvmJJ6SH1xxxxxXzf18XS9S7zPvtxvz68xxx8ePnfmR8xmXnf +7:JJzxOJxvfffyxOOJxny99y966ywvyPnp+uJvuF+efpPR8xOJM88zeJnnyx68x8 +7:JJxxxxOJx96+cxL7+XvkxPz6+eZz9xb98+WWOSx68J989uGHz96xOXvvkzfmL+XmfmHP +7:JJxxOOZPh+WWK989z9xfXzzxPzzN8mM69p8J+WSx689vkxOXmOPfknz+Xn +7:JJxOfyxOJny8nWq8+uJvudL68L+bx+eeJ79PnyWHv18mM+fX +7:JJxxxOJzfnzbfy+t8mPXztL+VyXp89tz6w+S9o+eeNzPvz89+WWMz8PXvkwmfnxmOPfXz6 +7:JJxxxxOf1xZ68OXnzePk+tN8mPnWRxJvX18+uePb98zx7z88yRnmfi+bbx+fvWSy8+t8 +7:JJxxxxxx+vnzz96v1uPz+XvnbcfyyxxV86y89x98z8xXmfy87ueN7j9uHz6x6 +7:JJxxzeOOPz89vefn1xxOPz+XvXvmJxL+Xk8w76yxxxOM6Xy896yx1PnX188+bwbf1x78M+tz9xzPV9uXvn +6:JJxOJxxxy898h+bx7+SPvzzz9Phk6mPy8hPzYnyWAXxWPyXn1p8+tzePdfuOOPXfy98mAmXnx+bOPny8mJM7 +6:JJyOOJyx68+f1y98y8xXnSx+Xv1x+bx+efvnuC9xxvfXheJxvfeZ8P +6:JJxxxxxxxPk+fy98+SPvzzJnvmSWJ8nmL8w+fyK86+ebwnxfvmAfOfnuXuON6Xz9uL+Xr +6:JJxOJxxJx+Xny87ny+uZ9OJ9vkyPh+eZxPzc98jJ+SxmJvk+WHU9uPq9 +6:JJxxxOJx+Xnz+XnyRX1px+fvmfmPy87zxMPz89vyX18z8 +6:JJxxxx18xnz6+bnSk+ub6XmXjx8+b6+ub+XuOfV9zfuOPfXmfmWPXmHx+fk +6:JJxOJxxxx676+vmXntxXufyXvzeJzZv1Pn18fyWSx+Xv1xPvhK8mOPnz6 +6:JJxOOPevnyWP18n1ufXkJ+fy+tuPy98mfy8w+OefnXn +6:JJxOOOOPz9+XmfmPnr+fyR8+bx+fny+tw+OPt+fSJ8mPy8zJ8 +6:JJxOOOOfyPhZ9zz96+fX1z9xXtx68z6+bxxfvfyWOPtPy8wXmJ8+vkwnxhxXb7 +6:JJxxzePzz989xxxvWXvfy9z9OPXyWJi+XnmfmOOJ+XvfmR8xPnqy9OR9 +6:JJxxxxxOvnnz1x786+vnWWMPWR+vnvzeJz8n1vjOfn1uNxPz+XvSx+XvmS8xR+fmXmHz8 +6:JJxxxxxxM+t8+bx86v18mPj7zePvnmR8nzzz9PnyWJPy89uJ+fy9 +6:JJxxxxxxvz6y8+ufp8z86+eeOPnbxvftOfvi6RyxPyXnvzcx7+tx+Xvkx+fmWJ68x8b +6:JJxJxxOPz9+bx8+ty9PkPV+SxOX18ny9+ueJx+fveZ+vh9x+XvmZOM78wfxMPy8 +6:JJ1xOOPzfntPzeZ99WC58xOfyxx898+eHeN8+XmHmOfnX +6:JJxxxxxh+SPuZPvzePj8mZ+XnyyuPXnvmePfk+fyyw6x+vnmAXk9uPz+Xv +6:JJxxxxxxxfvk9tvzzx7c9vyWPS89SXzefvkx+fy8nyyxh+XvnufuLvy9 +6:JJxxzOON789xNfy9p6yxOOPvXXhJ+bx+bP18+uXvkxxPkx87 +6:JJzOJxxx79vzvneePzfvh+WOJxx9886yxOPny89JP1xOPrvuAfz+R9x9y98mEzx7+R8POOOPk6+fn +5:JJJxxxxz96+bxfv1p86yy89q+uZ9uPvmePb+XkJ +5:JJxWOq8x66WJfU+bxOOOOOPXfqPmfnz97+uSy99xxxx+Xnd69pPkJxOf188 +5:JJxOOOOOPz+Xvk+fy98kxfXz1861xXt8yS8+bxmfnzePnvSx6Rv +5:JJxxxxxOWPV8+bP18U6+uSx+XvuePfuXvnWXnzbJZv1Xkw+OeJnfhi6 +5:JJxx1xOJz99vzfy9uZ6PmOOM6+fkfSh7+SyxxXvyvntxPX1zfoF8jJbM +5:JJxxxxxxx+r86+bw+Pc9uHK+V871x9vmfmPmfnSOSvn1uPz9vkx8iKP +5:JJxx1JxOPz+X18ny+rPnmPzD+XkmHfSxJxxJ+fvnyRxP18nnbeJOJ+f189rJP +5:JJxxxOOOPz8nX1zvXmfy8+bxJ+ft9XSxxxXtXnX1tuZ6J8mZxPfmKxPy88ZJ +5:JJxzJxxxxx+b86+bfnr7f1yJJPpOOL9q78xJyJ8J8hL6RJxx6y+tPnn +5:JJxxyxOPXSK+uOJ9V78xxM78kPcb+ubwz95+RS9x9uJ68 +5:JJxxxxxOPz6+b+XvmfXuZ+Xp+XnzeHxM+b+vk9WR9 +5:JJxxxxOOOPnz6n18+b+vnSyJvn1uKJ+fvmfy8OXh7zxvz89 +5:JJxOJxxPz86y8+fy+tx68+bx+f18+SN+tzPy9N8mPz6 +5:JJxOOOOOPnzb6+vj+fWR9+ufpz9PmfyWR88PzeJ+bJx98+SOSxx989P1tPkzPmKnj +5:JJxOOOOOOJ76Xnznvky8fzeM+fvyWJ+S99p6y9x9y9v +5:JJxxxxOKPzfvz+t8y86q7eHxz8XvySw6xJ89 +5:JJxxyOOJ68XpOPfeeOJk879+SNJ+tx+fy9vmb8xxXz8y86AX +5:JJzxxOJxPzz9887ZPkOPnyxOJON861Jx98PkxPUx89JxNxx+XvftP +5:JJxOOOOPzvU89z9xx76XbZ+ecxnftuZ9PyWKxPXmS8nkOXmPc +5:JJxxxxxxJ6+bx79Xy8z8+bvuXuZ96WPy9+uXvmXkxx+Xnf +4:JJOOOOOOJP1z9868zPiPzeJx9+fknSx1Ph6nkh9pNJf +4:JJxJxOOPy98j+SP1ZvjPzZJJz8+tJyPr8y8J +4:JJOJzxxz9vmfnuZ96xxOJ7nnyU9uN6+bLxP188yU8KP +4:JJOOJxxx+qvi7ny+vnyRyPuPv1pZJ8mPWSJ8PbxOOfvndpM +4:JJxxOOOOOJ8ny9Z8z89+WR988+WQ89 +4:JJOeJJxxPz8U9vz8w8JxPnRxxxxxnXnvWWN899p +4:JJxOOOJxPfyp8Z9d+bJfyWPiPkmJ+b69px9 +4:JJxxOOOZ+WN68x89y9x9+eZ9+XnkjZ+bZPSJROvhx8 +4:JJJxxOOOX187vyWPv1t89Z+bZxJOPvkXkOPj +4:JJOOJOOOOOR+vh7+X18z879z+XvbJx96WRJOJPvkH +4:JJxyJxOJxPWWPnvy97Z9uJ9+bx1Ofy98xPfd8hJJxJ+fv +4:JJOJxOZxxPz+S8nvmPUx6+tOJxfy998hhJ6qJROPv +4:JJJOOeeJ+fnpPyJxxXny98xL8hPtxR+fv +4:JJOOOJxN+cPyntxXfSPqpPzZJ1fnkJhOOOPfXv +4:JJxOOJxOOPf18+XmfmPneeJ+fnpPWWJ+XvhPtxOJ6+b9 +4:JJxzOZxXf18h+WOOJfz+q868h9ufuOK76XkmJ7Z +4:JJOZeJ7mPn1xOJxJ+b+XvrPvhOOJOPy887mfn +4:JJxxxxOJxx8+fy9t+fnzePz88yPmPi6tOOPvXmZ86k +4:JJOOOORxPV8x+fkfuePz96uPy96yKPh8mbPiP +4:JJzJOOOOOPU9+SxnXkPdOZ9PtpOPXyyKp9JpPhkOJxPz66R +3:JJJJJxxPevn18 +3:JJzJzpPhxfnRJxxxxfXfVPkJx7 +3:JJJxJJxxxfXz9+WR98hPrZJJP +3:JJJOORRPpOJ+fy88hOJxfy99 +3:JJJJJOJOPXkx6 +3:JJJOOOOePc+WXvmK89b76p +3:JJJJJJxxx6+ft+Xn +3:JJxOJOJOOPX187hnrJZJ9pRJJZ +3:JJJJJxOOOPz86y9+tPnShP +3:JJJJxJOOOPy98+bPXtJOJ+fX +3:JJJJxxJxxx98nzZ+UXvcJnSJP +3:JJxRxeNPb+XtJPztJJJxPy88hJxxuL667 +3:JJJxOOpxPzZ+XvmJy8+efh6+b6RJ8hP +3:JJxOJOOOPnXz+t86RpJ9pKJ +3:JJyJJOOOPz89R6+pJJ8MJZJP +3:JJJOOOJzJ+Xp6ypJ8K8zJ8JOPXzZJpPtOZK6P +3:JJJJJOOJx+fy+vny89uPX +3:JJOOpJxON+fXyXvhJxxx7+S8ffbJJOJy+vny+vn +3:JJJJOOJxxx+X187vy8h9pZ7ZJn +3:JJJxJxuJPXzdJ8yC8w58iP +2:JJJOLxuPXnyhLPr +2:JJRJOZP1JPhJePf +2:JJhJzJOJx+Xvy9vpqJP +2:JJJJJyPuJzPyPmPnf +2:JJJJJOOeJ98J9 +2:JJLJxOMK+WRx9fnvqR +2:JJJJJJxOPz9+qPn +2:JJJJJJxxx+fy89Xz8 +2:JJJJzx+vnRxxPf18 +2:JJJJJJxOPz+X187 +2:JJzJJhJPyJJhJ9JJJxzPR8 +2:JJZJJJxxx+Xnq8 +2:JJJJJJzOP186OPv +2:JJJJJJxxx7+vj6v +2:JJOZJpP1RJ8JxJfX +2:JJJJJOOOOfnynvz89f +2:JJJJJxxx+f1XnXz8 +2:JJJJOZJJ+pJxPXhOJPX +2:JJxyx98xOfRJOJ97+fv +2:JJJJJOJxx967pP diff --git a/src/main/resources/trees/dtphc2/jo_codes/pinyon.txt b/src/main/resources/trees/dtphc2/jo_codes/pinyon.txt new file mode 100644 index 0000000..9ccb167 --- /dev/null +++ b/src/main/resources/trees/dtphc2/jo_codes/pinyon.txt @@ -0,0 +1,140 @@ +8:JJOJxPz+X18+b+S+t8n +8:JJOJxOJx+fXz+X18+b+S+t8nyWX18+tz+Xvmb8y8 +8:JJOJxOJx+vnz+X18+efnyy89vzef18+Sy+vn1ufy98mfy8 +8:JJOJxOJx+fXz+X18+efvyy98n1zfyXt8zfyXk +8:JJOJxOPz6+fy+vnzfyX1vk +8:JJOJxOJ+fy+vnzfyX1vk+eefnt+Vy98mfy8 +8:JJOJxOPz6+fy+vnzfyX1vk +8:JJOJxOPz6+fy+vnzfyX1vk +8:JJOJxOJ+fy+vnzfyX1vk+bz+vnyWX18+tz+Xvkz+Xn +8:JJOJxOJ+fy+vnzfyX1vk+bz+vn1WXviy8 +8:JJOJxPz+X18+b+S+t8n +8:JJOJxOJx+fXz+X18+ufy98z+Xnzef18+Sy+vn1ufy98mfy8 +8:JJOJxOJ+fy+vnyX1z98z8+bz+vnyyy89vkz+Xn +8:JJOJxOJx+fXz+X18+b+S+t8nzef18+Sy+vn1ufy98mfy8 +8:JJOJxOJx+fXz+X18+b+uXvmXnyWX18+ub9y98zfmXn +8:JJOJxOJ+fy+vnzf1y98y8+bz+vnyWX18+tz+Xvkz+Xn +8:JJOJxOJ+fy+vnzz8+WXnt+bz+vnyWX18+tz+Xvkz+Xn +8:JJOJxOJ+fy+vnzfyX1vk+bz+vnyWX18+tz+Xvkz+Xn +8:JJOJxOPz6+fy+vnzfyX1vk +8:JJOJxOJ+fy+vnzz8+WXnt+bz+vnyWX18+tz+Xvkz+Xn +7:JJOJxOJ+fy+vnzfyX1vk+bz+vnyWX18+tz+Xvkz+Xn +7:JJOJxOJxPz+X18+ufy98z+XnyWX18+tz+Xvmb8y8+bzf18nyWWXnv1ufy9vkmfy8 +7:JJOJxOJxPz+X18+efvyy98n1yXufvmb+S8nzeefnv1yWX189z9y98mb8y8 +7:JJOJxOJxPz+X18+b+S+t8nyWX18+ub9y98mfy8+bzf18nyyWX1889ufyXt +7:JJOJxPz+X18+ef186y+vn +7:JJOJxOJxPz+X18+efnyy89vzef18+WWXnt8mfy8+bzz98nyyWX188mfy89uS9z9 +7:JJOJxPz+X18+b+S+t8n +7:JJOJxPz+X18+b+S+t8n +7:JJOJxOPz6+fy+vnzfyX1vk +7:JJOJxPz+X18+efnuXv +7:JJOJxOPz6+fy+vnzfyX1vk +7:JJOJxOPy8+fy+vnyX1z98z8 +7:JJOJxPz+X18+b+S+t8n +7:JJOJxOJ+fy+vnzfyX1vk+bz+vnyWX18+tz+Xvkz+Xn +7:JJOJxOJxPz+X189z+Xvzzz98nyyy98ntz+Xvzzzz989ufvyWWXvnkz+Xk +7:JJOJxOPz6+fy+vnzfyX1vk +7:JJOJxOJx+fXz+X18+S+ufvmfnzef18+Sy+vn1ufy98mfy8 +7:JJOJxOJx+vnz+X18+efvyy98nzzz89vyyy89vkz+Xn +7:JJOJxOJx+vnz+X18+S+ufvmfnzef18+Sy+vn1ufy98mfy8 +7:JJOJxOPz6+fy+vnzfyX1vk +6:JJOJxPz+X18+b+S+t8n +6:JJOJxOJxPz+X18+b+X1vk+eefnt+WWXnvkfzeefnvyWWXvn1ud6Xkzfy8n +6:JJOJxOPz6+fy+vnzfyX1vk +6:JJOJxOJx+vnz+X18+b+S+t8nyWX18+ub9y98mfy8 +6:JJOJxOJx+fXz+X18+b+S+t8nzef18+Sy+vn1ufy98mfy8 +6:JJOJxOP18+fy+vnzfyX1vk +6:JJOJxOJx+vnz+Xn1z+Xvmfy8+bz+vnyWX18+tz+Xvkz+Xn +6:JJOJxOJ+fy+vnzfyX1vk+eefvk+WWXvk9ufy9 +6:JJOJxOJ+fy+vnzfyX1vk+eefvk+Sy+vntz+Xv +6:JJOJxOJxPz+X18+b+S+t8nyuXvmb8y8+eub9vmb8nWWWXvk9uXv +6:JJOJxOJxPz+X18+b+S+t8nzzz98nyyy98ntz+Xvzeufvj+SyX18n1uXufvkz8y8 +6:JJOJxOP18+fy+vnzfyX1vk +6:JJOJxOJxPy9+b+S+t8nzef18+Sy+vn1ufy98mfnzeefvk+UyXmfntyXufv +6:JJOJxOJ+fy+vn1z+Xvmfy8+bz+vnyWX189ufy9 +6:JJOJxOPz9+fy+vnzfyX1vk +6:JJOJxOJx+vnz+X18+b+S+t8n1yXufvmb+S8n +6:JJOJxOJxPz+X18+b+WXnt+bz9+WWXnt8mfy8+bef18+Syy89+tzfy9vkzfyXk +6:JJOJxOP18+fy+vnzfyX1vk +6:JJOJxPz+X18+b+S+t8n +6:JJOJxOP18+fy+vnzf1y98y8 +5:JJOJxOPz6+fy+vnzfyX1vk +5:JJOJxOJx+vnz+X18+b+S+t8nzzz98nyyy98ntz+Xv +5:JJOJxOJ+fy+vnzfyX1vk+bz+vnyWX18+tz+Xvkz+Xn +5:JJOJxOP18+fy+vnzf1y98y8 +5:JJOJxOJx+fXz+X18+b+uXvmXnzef18+WWXnt8mfy8 +5:JJOJxOJx+vnz+X18+b+uXvmXnzef18+Sy+vn1ufy98mfy8 +5:JJOJxOJx+fXz+X18+b+S+t8nzef18+Sy+vn1ufy98mfy8 +5:JJOJxOJxPz+X18+S+ufvmfnzef18+Sy+vn1ufy98mfy8+eeefnvkz8+UyXk9ufuXv +5:JJOJxOJx+fXz+X18+b+S+t8nzef18+Sy+vntz+Xv +5:JJOJxOPz6+fy+vnyX1z98z8 +5:JJOJxPz+X18+b+uXvmXn +5:JJOJxOJx+fXz+X18+S+ufvmfnzef18+Sy+vn1ufy98mfy8 +5:JJOJxOJ+fy+vnzz8+WXnt+bz+vn1yXufvkz+Xn +5:JJOJxOP18+fy8+b+S+t8n +5:JJOJxOPz6+fy+vnzfyX1vk +5:JJOJxPz+X18+b+S+t8n +5:JJOJxPz+X18+b+S+t8n +5:JJOJxOJxPz+X18+b+uXvmXnz+uS9z98yXmfnzeefvnyWWXnv1ub+Xt8mfyXk +5:JJOJxPz+X18+efnyy89v +5:JJOJxOJ+fy+vnzfyX1vk+eefvk+WWXvk9ufy9 +4:JJOJxOPz6+fy+vnzfyX1vk +4:JJOJxOJ+fy+vnzfyX1vk+bz+vnyWX18+tz+Xvkz+Xn +4:JJOJxOJx7+X18z8+bz+vn1yXufvmS8z8+bd+Sy+vn1uefvV8mb+Xn +4:JJOJxOP18+fy+vnzfyX1vk +4:JJOJxOJxPz+X18+b+uXvk+uS9z98z+Xk+bz+vk+S1y98y8+tz9XkmfX +4:JJOJxOJx+vnz+X18+b+S+t8nzef18+Sy+vn1ufy98mfy8 +4:JJOJxPz+X18+S+ufvmfn +4:JJOJxOJxPz9+efvWXvzef18+Sy8+ty98mXnzbv1yS9zfq8yU8z8X +4:JJOJxOJxPz+X18+b+S+t8nzef18+uS9z98yXmfnyWV8+tr8zb8y8f +4:JJOJxOJ+fy+vnyX1z98z8+eefnt8WXn +4:JJOJxOJ+fy+vnzfyX1vk+fyWX18+tz+Xvkz+Xn +4:JJOJxOJx+vnz+X18+efvyy98nzef18+Sy+vn1ufy98mfy8 +4:JJOJxOP18+fy+vnzfyX1vk +4:JJOJxOPz6+fy+vnzfyX1vk +4:JJOJxPz+X18+efvyy98n +4:JJOJxOJx6+S+vj+bz+vnyWXv1q8k+bz+vn1tfky8 +4:JJOJxOJ+fy+vnzfyX1vk+eefnt+WWXnt8mfy8 +4:JJOJxOJxPy+vnzz89y9+Sy+vn1ufvmb8y8+ebvtz9+WS189uXvkyXj +4:JJOJxOJ+fy+vnzz98y8+bz+vnyWX18+tz+Xvkz+Xn +4:JJOJxOJxPy9+S+ufvk+eb+vk6y8+ebn18mfnWSn1r8n +3:JJJJOJx+fXz+X18 +3:JJJJOJx+vnz+Xn +3:JJJOJxOJ+fy+vnzz9+WXvk+cnuS9f +3:JJJOJxOJ+fy+vnzz8+WXnt+ec9vyV8j +3:JJOJxPz+X18+b+S+t8n +3:JJOJxOJ+fy+vnzfyX1vk+bvyynt8i +3:JJJJOJx+vny+vn +3:JJJJOJx+fXz+Xn +3:JJOJxPz+X18+efvyXk +3:JJJJOJx+vnz+Xn +3:JJJOJxOJ+fy+vnzfyX1vk+b18+Svtf +3:JJJOJx+vnz+Xn +3:JJOJxOJ+fy+vnzf1y98y8+Svrz9 +3:JJJJOJx+vnz+Xv +3:JJOJxOJxPz8+ufvmfy8+bnyWvntXSv +3:JJOJxPz+X18+b+S+t8n +3:JJOJxOJ+fy+vnzf1y98y86q +3:JJJJOJx+vnz+X18 +3:JJOJxPz+X18+fyX1vk +3:JJJOJxOJ+fy+vnzfyX1vk+bnkf +2:JJJOJx+fXz+X18 +2:JJJJOJPy8 +2:JJJJJP +2:JJJJJJ +2:JJJJJJP +2:JJJJOJ8 +2:JJJJJJP +2:JJJJJJP +2:JJJOJPz9 +2:JJJJJJ +2:JJJJJ +2:JJJJJJ +2:JJJOJ+Xv +2:JJJOJJ7v +2:JJJJOJJ9f +2:JJJJJP +2:JJJJOJ7 +2:JJJJP +2:JJJJJP +2:JJJOJ9 diff --git a/src/main/resources/trees/dtphc2/jo_codes/rubber.txt b/src/main/resources/trees/dtphc2/jo_codes/rubber.txt new file mode 100644 index 0000000..54d9067 --- /dev/null +++ b/src/main/resources/trees/dtphc2/jo_codes/rubber.txt @@ -0,0 +1,112 @@ +2:JJ1JJJOPz+XnhOZJJ6JJP +2:JJJJJJx+fy+vn +2:JJJJJOOPy8+fv +2:JJJJJxxx+X1879R +2:JJJJOROPz+vnuPf +2:JJJJRJx+f18 +2:JJJJyJOPz+vnpLP +2:JJJKJ1xPb8ePf +2:JJJKJOOPz89 +2:JJJyJJJ+pJJx78JJxPf +2:JJKJ1JJ8JJ +2:JJKJJOOPvzfn +2:JJOZJJOP186JJJx+vn +2:JJRJJOOPnz9 +2:JJyJOpJPhJx79LJJOPn +2:JJyJ+pJPmJxONxvV+d677 +3:JJ1JJJOPz+XvhJJOJ+b+S8 +3:JJJ1JJOPz+XvhOJxx+XnfbP +3:JJJJJOOPy+vnef18 +3:JJJJJxxx+X187fSP +3:JJJJJxxx+X187fyyPh9p +3:JJJJOJxx+Xnz9+bPtx7f +3:JJJJOZOPz+vnWJx+XntP +3:JJJJOZxPd+RxPX1OJ98OJ8 +3:JJJJx1Jx+fXmOOPfS8Z7ZJ +3:JJJJxxyOPvhx+fnzePvtOPz66R1Ph +3:JJJJxyJx+fy+vnuNPec98ZOPz+vn +3:JJJyJOOZ+R8x89z+XvhLOM7 +3:JJOORJJx+fy+vnhZJx+fntJJOPz+Xn +3:JJxORJxxx+Xnf1q8h8LJxPntJJb +3:JJxRJJxx+XvnzZJJOPXtJJJx6 +3:JJxyJJOPz+XnpJxpXfbJJxN8 +4:JJ1JJOOOPz89+XkPmbZOPy86Jxx86Rv +4:JJJxJxyOPy89xx79y98eJ8nzZJOPfkiJx7 +4:JJJxJyS+uOWPXp7z98xOPy97ePftJp +4:JJJxOJOOPXz9vzbxPntKPkJJx8 +4:JJJxOJxK+fyi9+bN+qvkfSJK +4:JJJxxOOOOP186nzePnkny96uPS9px9 +4:JJOOJxOOOP186+f1ufXnkx76RORx987 +4:JJOOOZONPz+XnRh+tJJx98mRRPhOJ96RpxvV +4:JJOORKWPvuJOOJ6+q8h9pOZ6XzZJOJ88kJJP +4:JJxOOJzOPb+R9PSPkOfmPXtJf +4:JJxORKOOPz68+uJOJz9+fntJOPfhLhPkhJJx6 +4:JJxxOOOOOOPXz9vkPznvnftJx+fvSRP +4:JJxxx1Jxx6+bP18XmOXnc7eLJPtOPvkMx6R6RROJ8 +4:JJxxxxxxRXnVvz+vk6vvzfyy98n +4:JJxxyJOJPyXvhxJOPz87d9tJJx67bJt +4:JJyJRJx6+pJxOOPz69fbOPvhJxxJx87ePfkJP +5:JJ1Jxxxxxx+f186nnq7eJPfWSx688OZz8OJ78WJJ8 +5:JJ1xOOOOPz+Xnvz69z97Z8zOZ8x86JxPyXn +5:JJOJxxxxxx+XnvyvnvSM+dzPpN8yXmJh7ePfzbzJvnWSp9xKvtJ +5:JJxJxxOOOP186XzZ8h9uJ7+eb96yV9vbZz9 +5:JJxJxxxxxXr+fyvnvSx99uPz9R+bxOJPfz9+SWPy98mJMKPk +5:JJxOJxOJx+fy+vnXzhftxL77ePfyRJyPpvkmZJPRJJ +5:JJxxOOJOOPXfyR8mJ89zOPfXzeJ79uOfXvSxX18 +5:JJxxOOOJxx+fX188h6yvnzjx+fntz67zx79x96SyJPhP +5:JJxxOOOOOJ6+ft+S8fzZ9+XkOXnSVPzbxPvtxePfuRPpx7f +5:JJxxOOOORP1J87+WWPnuPvnbeJx78+ddxPvkxKPz8ntxOXuJvvX +5:JJxxxOOJyP1vnzfy9vnufuK9z+XvSWPUP1bPmbMxfnhRk +5:JJxxxxxxxJ+fX18Xz68hnzZfU9tz+XpXSxny9 +5:JJxxxxyOPnpx+fvzZ86+b9uJz67+Sxp6R8mJzx86J7Z +5:JJyJJyxPS9xPv1uJuJvz978xOJOJx+Xnd8zePfhJ7 +5:JJzJOOOJvvf1fj+WJxxxxyPvmXnXvXSx6v1txJp6XhMhxPX +5:JJzOJuJ77eY8+WJOOJN86XUxPkJ+tpOPXmJMJPn +6:JJOJxxxxOPy+vnmfyPh+fyXtvmb+Xnz9+edfmPnyyWPyy988Ptxy9q7 +6:JJOOOJyOJ98xOPfc+cny9uJ98kJPzzLx+f189N6yx+S8npqy9 +6:JJx1xxxZx79XSxJXS9y9PmOOOJxx+fXnzh6y9PnWXnkx8+eeJOPfeZPpPknSR +6:JJxJxOZL+Rx6+uJPvmJx88zPh6yx69p71OLxJPtvvjxOJPfeZnv +6:JJxOJxxxOPy8+fk6+tx78+bxJd79+SxOJny968zxhJ78yxJ68Mx8 +6:JJxxORxJ+SXt8xxJx77b8mJ86yx68h+bLZP1uJz9vyS98kx+fn +6:JJxxxJxx18x87ny9vzeOZx99p88hmOfnXSxOP1y9PkXSJK9puJxfXz9 +6:JJxxxxxxxxXzvnynvnzZPvV+ufp8XWWPV9+b1N8x+fn18mPy8z8X +6:JJxxxxxyxPvmOJ877eJ+fvr7b6RWJ6+ubZ9xOfSPufp8zcJ8mfyx68P +6:JJxxxxyOPU+uJxXz99yPt8OJx+fy8+fnbOJPfyyxnvnvky8xPz89zuJLPzfuXvWPy9 +6:JJxxxy+pxxPvz68JM7ZxM+b+vnyWM+WXnvtNxx678hxWPnk +6:JJxyKWX1vh8xOJxJ+f1yPvi8nj+bJzx7f18J9pJx+b9v +6:JJyNOJxJ+UPvSxvX1zxOJPvb9Nxx978xOOOOJPzZ86nzbx786yx688zfmJ+Xn +6:JJyWPyWR8+ovn1xxxxK+S97rfXtt8xOJOOPvzfnzfyyM98+fmR8x+fn +6:JJyxOJxxJ87+SPtJ9XmeJJx77eF+eOPfvnmJxOJXXy88 +6:JJzJeJkfbx8+ROJJOPz86yxXk9P1xJzJJ9OR99zJ+XpxuL968xMxM88kx8 +7:JJOJxxxxxx67+X1p8ffWR8g+bx+b89V+SyJ+p8+tx+fy9vjMk +7:JJOOuOOOePfR9+b69q8OOOJx767+SPnzzxevnnvWWPXt +7:JJxOOJxxxPy89z+Xvz+SPny9zeJ89p8mJ8+eeeeJPfh9t8knyyxPWS+pvhJ8x89 +7:JJxOOOJxxx+Xnf18mPnzeJ+fvuR9fWRXhM+tyPuPqK8mJ+XnzeLMPnWRRR8n +7:JJxOOOOOOOPXz9XkXz686nz+txxXz9XXkx6+eePefv1uPfh6yJS8x8 +7:JJxx1xJvVJ8xxx6+fnXbxOfp7+SxxOOPvXnWXp+vkMP +7:JJxxOJxOJ+b+X18nzp+XnzcPiP1uOJxPvfy9vkxz68U+eePzufvntvSxxK86 +7:JJxxOOOJxPz+S+t87+Sx+XnmfhfuS9OZ97zefh9N8mOPXmXhJ +7:JJxxxOOOJx66+rN8fWR9ufuPvzeLxJ788hxR8c6yKx+S98kxXntOZpPtP +7:JJxxxxOOOOPXt6+bfknzz9PyWJn1vnki9pxNPt+bePfSyx6vntzb9L +7:JJxxxxxxXvzz+vmPnXnWWPXp9z9p+fyWGC86y+vnkOPk +7:JJxxxxxyxOPvyR98xxPnftffSS7ePzw+fp8+txK68mOORy8nj78y8x8 +7:JJxxxxyxx+vk6X1o8feZ99R6R+bx7+tx98yU8xxx878X +7:JJyJWJ6+pxxROfndPuWPXvmJeOOJ9vd8c+beJfvkxJN+S8Z +7:JJyOJOJxPyXmfnnSxPy8+uJxxJxPz97vqxPvzeJ9voq8zOJxPfz98xxOXh68 +7:JJzLxxPmfnufvyWJxx89+SyP189+uOOOOJvnXtJPXvmJPmRxxJPXk8mZ8P +8:JJxJxyRn1xxxx+fXt7vtp8xxxXmXnfi7ZOOPvfzbzz9x98xOPnnyyOWJpXXhPkxPntx+S9 +8:JJxOJxxxOPy+vn1p8h+bxPb6X1tuPvk+VWOPnyS9p8knzeJxb9feePb+tx98xPnSx8i +8:JJxOJyOJvy98xxfnfzbxPz8+Sx6+txJN9vkxfy86mPn +8:JJxOJzJOPvyOJXX1JvhOJ8Xzzxj79NJ8mMJ6+Sx+SOPXvtuJy9+bvy9 +8:JJxOOJxOK+fvzuPfk+fWR9JPjzPny+txxL7+SPtx68mK8y8 +8:JJxOOJxxOPy8+b6X1zz968+tx98mPz+XnzeMOPfdJ6WPyWXvvmeLfmfnUh +8:JJxOOOOOOOPXc8+fuXt+SxPXnuSy99vkw+Kvz8XzeJ1fj+bxz98+tPkPWRR+vmPn +8:JJxOOOOOOPV+b96+bZ8U9uOPfy96+ebzz9vntfyyORnnuPq8mJMx7+bJx88yxPXhx+fn +8:JJxxOOJxOPXz88k9zx7b+RPuJxx6796WJxxOPXXkPWSnh+eeLxfnr8mJ89yWXvuNvd +8:JJxxOOOOOOvnz6X186+vkxnb+d6yPtx67eOufp8Ped8+Swty9+WJR68OPn1prxPz98kz8 +8:JJxxxOJxxx68nz+S9vyV8hn1ufy9xPt8XfyWJ+Vx9vnkOXh +8:JJxxxOOOOK+t8y87+X1vkneZ8+Sxx968hz89zLp+Sp9ufyJ9o+ebxxxnf1878mML76yXkx8 +8:JJxxxxxxR7p+tJPk+c6yJ8+ufvnzzLOPfnWSw+N8h89z6X +8:JJxxxxxxx+S89t+eZnnV8nz1vnU+tp8+eePfnWWKxPXtPkx7 +8:JJxxxyWJ1x68+Xn1Jxxx+XvnvjxPnbOJxPfb9txzN6J9+beePf1xN988mJUPz8 +8:JJxxyJxJx6618+uJOJx97ffhxJJ+b8j7nyWORx89Pn1zePvpuOPvXkxRy88 diff --git a/src/main/resources/trees/dtphc2/species/rubber.json b/src/main/resources/trees/dtphc2/species/rubber.json index f278700..8b801f1 100644 --- a/src/main/resources/trees/dtphc2/species/rubber.json +++ b/src/main/resources/trees/dtphc2/species/rubber.json @@ -4,7 +4,7 @@ "log_drop_multiplier": 0.8, "log_drop_fake_log": "jungle_log", "family": "dtphc2:rubber", - "tapering": 0.3, + "tapering": 0.1, "signal_energy": 14.0, "up_probability": 4, "lowest_branch_height": 4, diff --git a/src/main/resources/trees/dtphc2/world_gen/default.json b/src/main/resources/trees/dtphc2/world_gen/default.json index e37262a..12156f8 100644 --- a/src/main/resources/trees/dtphc2/world_gen/default.json +++ b/src/main/resources/trees/dtphc2/world_gen/default.json @@ -50,7 +50,9 @@ "dtphc2:plum": 1, "dtphc2:walnut": 1, "dtphc2:hazelnut": 1, - "dtphc2:soursop": 1 + "dtphc2:soursop": 1, + "dtphc2:mesquite": 1, + "dtphc2:pinyon": 1 } } } @@ -70,7 +72,8 @@ "dtphc2:gooseberry": 2, "dtphc2:plum": 2, "dtphc2:pawpaw": 2, - "dtphc2:lime": 1 + "dtphc2:lime": 1, + "dtphc2:mesquite": 1 } } } @@ -135,7 +138,9 @@ "dtphc2:vine_passion_fruit": 4, "dtphc2:vine_vanilla": 4, "dtphc2:date": 1, - "dtphc2:mango": 1 + "dtphc2:mango": 1, + "dtphc2:rubber": 2, + "dtphc2:eucalyptus": 2 } } } @@ -149,7 +154,7 @@ "species": { "method": "splice_before", "random": { - "...": 250, + "...": 200, "dtphc2:apricot": 1, "dtphc2:cashew": 1, "dtphc2:cinnamon": 1, @@ -162,7 +167,8 @@ "dtphc2:pistachio": 1, "dtphc2:pomegranate": 1, "dtphc2:vine_peppercorn": 1, - "dtphc2:vine_vanilla": 1 + "dtphc2:vine_vanilla": 1, + "dtphc2:pinyon": 2 } } } @@ -196,7 +202,8 @@ "dtphc2:rambutan": 3, "dtphc2:durian": 3, "dtphc2:papaya": 1, - "dtphc2:vine_passion_fruit": 1 + "dtphc2:vine_passion_fruit": 1, + "dtphc2:rubber": 1 } } } diff --git a/src/main/resources/trees/dtphc2/world_gen/feature_cancellers.json b/src/main/resources/trees/dtphc2/world_gen/feature_cancellers.json new file mode 100644 index 0000000..9a10802 --- /dev/null +++ b/src/main/resources/trees/dtphc2/world_gen/feature_cancellers.json @@ -0,0 +1,10 @@ +[ + { + "select": { "types_or": [ "coniferous", "cold", "hills", "forest", "spooky", "jungle", "ocean", "swamp" ] }, + "cancellers": { + "types": [ "dtphc2:tree" ], + "namespaces": ["pamhc2trees"] + } + } + +] \ No newline at end of file