diff --git a/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java b/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java index cbd95f79..f6039c1e 100644 --- a/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java +++ b/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java @@ -4,7 +4,6 @@ import net.minecraft.block.BlockState; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; - import ru.betterend.rituals.InfusionRitual; public class InfusionPedestalEntity extends PedestalBlockEntity { diff --git a/src/main/java/ru/betterend/entity/EntityEndFish.java b/src/main/java/ru/betterend/entity/EntityEndFish.java index 1b584a94..f72779f0 100644 --- a/src/main/java/ru/betterend/entity/EntityEndFish.java +++ b/src/main/java/ru/betterend/entity/EntityEndFish.java @@ -5,6 +5,7 @@ import java.util.Random; import net.minecraft.block.Blocks; import net.minecraft.entity.EntityType; +import net.minecraft.entity.ItemEntity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; import net.minecraft.entity.attribute.DefaultAttributeContainer; @@ -15,7 +16,6 @@ import net.minecraft.entity.data.TrackedData; import net.minecraft.entity.data.TrackedDataHandlerRegistry; import net.minecraft.entity.passive.SchoolingFishEntity; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.nbt.CompoundTag; import net.minecraft.particle.ParticleTypes; import net.minecraft.sound.SoundEvent; @@ -24,6 +24,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.World; +import ru.betterend.registry.EndItems; public class EntityEndFish extends SchoolingFishEntity { public static final int VARIANTS = 5; @@ -61,7 +62,7 @@ public class EntityEndFish extends SchoolingFishEntity { @Override protected ItemStack getFishBucketItem() { - return new ItemStack(Items.WATER_BUCKET); + return new ItemStack(EndItems.BUCKET_END_FISH); } @Override @@ -115,4 +116,10 @@ public class EntityEndFish extends SchoolingFishEntity { List list = world.getEntitiesByClass(EntityEndFish.class, box, (entity) -> { return true; }); return list.size() < 9; } + + @Override + protected void dropLoot(DamageSource source, boolean causedByPlayer) { + ItemEntity drop = new ItemEntity(world, getX(), getY(), getZ(), new ItemStack(EndItems.END_FISH_RAW)); + this.world.spawnEntity(drop); + } } diff --git a/src/main/java/ru/betterend/mixin/common/IngredientMixin.java b/src/main/java/ru/betterend/mixin/common/IngredientMixin.java index c146ec0a..d6be6fb1 100644 --- a/src/main/java/ru/betterend/mixin/common/IngredientMixin.java +++ b/src/main/java/ru/betterend/mixin/common/IngredientMixin.java @@ -8,7 +8,6 @@ import org.spongepowered.asm.mixin.Shadow; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.recipe.Ingredient; - import ru.betterend.interfaces.CompoundSerializer; @Mixin(Ingredient.class) diff --git a/src/main/java/ru/betterend/recipe/FurnaceRecipes.java b/src/main/java/ru/betterend/recipe/FurnaceRecipes.java index f012b118..91bac180 100644 --- a/src/main/java/ru/betterend/recipe/FurnaceRecipes.java +++ b/src/main/java/ru/betterend/recipe/FurnaceRecipes.java @@ -9,6 +9,7 @@ public class FurnaceRecipes { public static void register() { FurnaceRecipe.make("end_lily_leaf_dried", EndItems.END_LILY_LEAF, EndItems.END_LILY_LEAF_DRIED).build(); FurnaceRecipe.make("end_glass", EndBlocks.ENDSTONE_DUST, Blocks.GLASS).build(); - FurnaceRecipe.make("end_glass", EndItems.SHADOW_BERRY_RAW, EndItems.SHADOW_BERRY_COOKED).build(); + FurnaceRecipe.make("end_berry", EndItems.SHADOW_BERRY_RAW, EndItems.SHADOW_BERRY_COOKED).build(); + FurnaceRecipe.make("end_fish", EndItems.END_FISH_RAW, EndItems.END_FISH_COOKED).build(); } } diff --git a/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java b/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java index ba15384b..fbf9eee3 100644 --- a/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java +++ b/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java @@ -17,7 +17,6 @@ import net.minecraft.util.Identifier; import net.minecraft.util.JsonHelper; import net.minecraft.util.registry.Registry; import net.minecraft.world.World; - import ru.betterend.BetterEnd; import ru.betterend.interfaces.CompoundSerializer; import ru.betterend.recipe.EndRecipeManager; diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 8b0b1070..1d3d59f2 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -139,7 +139,7 @@ public class EndBlocks { // Wall Plants // public static final Block PURPLE_POLYPORE = registerBlock("purple_polypore", new BlockWallMushroom(13)); public static final Block TAIL_MOSS = registerBlock("tail_moss", new BlockWallPlant()); - public static final Block CYAN_MOSS = registerBlock("cyan_moss", new BlockWallPlant(13)); + public static final Block CYAN_MOSS = registerBlock("cyan_moss", new BlockWallPlant()); // Crops // public static final Block SHADOW_BERRY = registerBlock("shadow_berry", new BlockShadowBerry()); diff --git a/src/main/java/ru/betterend/registry/EndFeatures.java b/src/main/java/ru/betterend/registry/EndFeatures.java index 12b51580..bd492652 100644 --- a/src/main/java/ru/betterend/registry/EndFeatures.java +++ b/src/main/java/ru/betterend/registry/EndFeatures.java @@ -22,8 +22,7 @@ import ru.betterend.world.features.UnderwaterPlantFeature; import ru.betterend.world.features.VineFeature; import ru.betterend.world.features.WallPlantFeature; import ru.betterend.world.features.WallPlantOnLogFeature; -import ru.betterend.world.features.bushes.DragonTreeBushFeature; -import ru.betterend.world.features.bushes.PythadendronBushFeature; +import ru.betterend.world.features.bushes.BushFeature; import ru.betterend.world.features.terrain.EndLakeFeature; import ru.betterend.world.features.terrain.RoundCaveFeature; import ru.betterend.world.features.trees.DragonTreeFeature; @@ -39,8 +38,8 @@ public class EndFeatures { public static final EndFeature DRAGON_TREE = new EndFeature("dragon_tree", new DragonTreeFeature(), 3); // Bushes // - public static final EndFeature PYTHADENDRON_BUSH = new EndFeature("pythadendron_bush", new PythadendronBushFeature(), 4); - public static final EndFeature DRAGON_TREE_BUSH = new EndFeature("dragon_tree_bush", new DragonTreeBushFeature(), 15); + public static final EndFeature PYTHADENDRON_BUSH = new EndFeature("pythadendron_bush", new BushFeature(EndBlocks.PYTHADENDRON_LEAVES, EndBlocks.PYTHADENDRON.bark), 4); + public static final EndFeature DRAGON_TREE_BUSH = new EndFeature("dragon_tree_bush", new BushFeature(EndBlocks.DRAGON_TREE_LEAVES, EndBlocks.DRAGON_TREE.bark), 15); // Plants // public static final EndFeature UMBRELLA_MOSS = new EndFeature("umbrella_moss", new DoublePlantFeature(EndBlocks.UMBRELLA_MOSS, EndBlocks.UMBRELLA_MOSS_TALL, 5), 5); diff --git a/src/main/java/ru/betterend/registry/EndItems.java b/src/main/java/ru/betterend/registry/EndItems.java index 99337710..da28d586 100644 --- a/src/main/java/ru/betterend/registry/EndItems.java +++ b/src/main/java/ru/betterend/registry/EndItems.java @@ -10,9 +10,12 @@ import net.minecraft.block.dispenser.ItemDispenserBehavior; import net.minecraft.entity.EntityType; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.SpawnReason; +import net.minecraft.fluid.Fluids; import net.minecraft.item.ArmorItem; import net.minecraft.item.BlockItem; +import net.minecraft.item.FishBucketItem; import net.minecraft.item.FoodComponent; +import net.minecraft.item.FoodComponents; import net.minecraft.item.Item; import net.minecraft.item.Item.Settings; import net.minecraft.item.ItemStack; @@ -43,12 +46,12 @@ public class EndItems { private static final List MOD_ITEMS = Lists.newArrayList(); // Materials // - public final static Item ENDER_DUST = registerItem("ender_dust", new Item(makeSettings())); - public final static Item TERMINITE_INGOT = registerItem("terminite_ingot", new Item(makeSettings())); - public final static Item AETERNIUM_INGOT = registerItem("aeternium_ingot", new Item(makeSettings())); - public final static Item END_LILY_LEAF = registerItem("end_lily_leaf", new Item(makeSettings())); - public final static Item END_LILY_LEAF_DRIED = registerItem("end_lily_leaf_dried", new Item(makeSettings())); - public final static Item CRYSTAL_SHARDS = registerItem("crystal_shards", new Item(makeSettings())); + public final static Item ENDER_DUST = registerItem("ender_dust"); + public final static Item TERMINITE_INGOT = registerItem("terminite_ingot"); + public final static Item AETERNIUM_INGOT = registerItem("aeternium_ingot"); + public final static Item END_LILY_LEAF = registerItem("end_lily_leaf"); + public final static Item END_LILY_LEAF_DRIED = registerItem("end_lily_leaf_dried"); + public final static Item CRYSTAL_SHARDS = registerItem("crystal_shards"); // Armor // public static final Item TERMINITE_HELMET = registerItem("terminite_helmet", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.HEAD, makeSettings())); @@ -81,10 +84,17 @@ public class EndItems { // Food // public final static Item SHADOW_BERRY_RAW = registerFood("shadow_berry_raw", 4, 0.5F); public final static Item SHADOW_BERRY_COOKED = registerFood("shadow_berry_cooked", 6, 0.7F); + public final static Item END_FISH_RAW = registerFood("end_fish_raw", FoodComponents.SALMON); + public final static Item END_FISH_COOKED = registerFood("end_fish_cooked", FoodComponents.COOKED_SALMON); + public final static Item BUCKET_END_FISH = registerItem("bucket_end_fish", new FishBucketItem(EndEntities.END_FISH, Fluids.WATER, makeSettings())); // Other // public static final Item ETERNAL_CRYSTAL = registerItem("eternal_crystal", new EternalCrystal()); + protected static Item registerItem(String name) { + return registerItem(BetterEnd.makeID(name), new Item(makeSettings())); + } + protected static Item registerItem(String name, Item item) { return registerItem(BetterEnd.makeID(name), item); } diff --git a/src/main/java/ru/betterend/rituals/InfusionRitual.java b/src/main/java/ru/betterend/rituals/InfusionRitual.java index 9c229275..4fc0d54f 100644 --- a/src/main/java/ru/betterend/rituals/InfusionRitual.java +++ b/src/main/java/ru/betterend/rituals/InfusionRitual.java @@ -11,7 +11,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; - import ru.betterend.blocks.entities.InfusionPedestalEntity; import ru.betterend.blocks.entities.PedestalBlockEntity; import ru.betterend.recipe.builders.InfusionRecipe; diff --git a/src/main/java/ru/betterend/util/BlocksHelper.java b/src/main/java/ru/betterend/util/BlocksHelper.java index dfbac0ba..e9fe5398 100644 --- a/src/main/java/ru/betterend/util/BlocksHelper.java +++ b/src/main/java/ru/betterend/util/BlocksHelper.java @@ -24,6 +24,7 @@ import net.minecraft.world.WorldAccess; import ru.betterend.blocks.BlockBlueVine; import ru.betterend.blocks.basis.BlockDoublePlant; import ru.betterend.blocks.basis.BlockGlowingFur; +import ru.betterend.blocks.basis.BlockVine; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndTags; @@ -147,117 +148,127 @@ public class BlocksHelper { doubleCheck.add(POS.toImmutable()); } - // Chorus - if (state.isOf(Blocks.CHORUS_PLANT)) { - Set ends = Sets.newHashSet(); - Set add = Sets.newHashSet(); - ends.add(POS.toImmutable()); - - for (int i = 0; i < 64 && !ends.isEmpty(); i++) { - ends.forEach((pos) -> { - setWithoutUpdate(world, pos, AIR); - for (Direction dir: HORIZONTAL) { - BlockPos p = pos.offset(dir); + if (!state.canPlaceAt(world, POS)) { + + // Chorus + if (state.isOf(Blocks.CHORUS_PLANT)) { + Set ends = Sets.newHashSet(); + Set add = Sets.newHashSet(); + ends.add(POS.toImmutable()); + + for (int i = 0; i < 64 && !ends.isEmpty(); i++) { + ends.forEach((pos) -> { + setWithoutUpdate(world, pos, AIR); + for (Direction dir : HORIZONTAL) { + BlockPos p = pos.offset(dir); + BlockState st = world.getBlockState(p); + if ((st.isOf(Blocks.CHORUS_PLANT) || st.isOf(Blocks.CHORUS_FLOWER)) && !st.canPlaceAt(world, p)) { + add.add(p); + } + } + BlockPos p = pos.up(); BlockState st = world.getBlockState(p); if ((st.isOf(Blocks.CHORUS_PLANT) || st.isOf(Blocks.CHORUS_FLOWER)) && !st.canPlaceAt(world, p)) { add.add(p); } - } - BlockPos p = pos.up(); - BlockState st = world.getBlockState(p); - if ((st.isOf(Blocks.CHORUS_PLANT) || st.isOf(Blocks.CHORUS_FLOWER)) && !st.canPlaceAt(world, p)) { - add.add(p); - } - }); - ends.clear(); - ends.addAll(add); - add.clear(); + }); + ends.clear(); + ends.addAll(add); + add.clear(); + } } - } - // Liquids - else if (!state.getFluidState().isEmpty()) { - POS.setY(y - 1); - if (world.isAir(POS)) { - POS.setY(y); - while (!world.getFluidState(POS).isEmpty()) { + // Vines + else if (state.getBlock() instanceof BlockVine) { + while (world.getBlockState(POS).getBlock() instanceof BlockVine) { setWithoutUpdate(world, POS, AIR); - POS.setY(POS.getY() + 1); - } - continue; - } - BlockState st; - for (Direction dir: HORIZONTAL) { - if ((st = world.getBlockState(POS.offset(dir))).getMaterial().isReplaceable() && st.getFluidState().isEmpty()) { - world.getFluidTickScheduler().schedule(POS, state.getFluidState().getFluid(), 0); - break; - } - } - if ((st = world.getBlockState(POS.up())).getMaterial().isReplaceable() && st.getFluidState().isEmpty()) { - world.getFluidTickScheduler().schedule(POS, state.getFluidState().getFluid(), 0); - } - } - // Falling blocks - else if (state.getBlock() instanceof FallingBlock) { - BlockState falling = state; - - POS.setY(POS.getY() - 1); - state = world.getBlockState(POS); - - int ray = downRayRep(world, POS.toImmutable(), 64); - if (ray > 32) { - BlocksHelper.setWithoutUpdate(world, POS, Blocks.END_STONE.getDefaultState()); - if (world.getRandom().nextBoolean()) { POS.setY(POS.getY() - 1); - state = world.getBlockState(POS); - BlocksHelper.setWithoutUpdate(world, POS, Blocks.END_STONE.getDefaultState()); } } - else { - POS.setY(y); - boolean place = true; - for (Direction dir: HORIZONTAL) { - state = world.getBlockState(POS.offset(dir)); - if (!state.getFluidState().isEmpty()) { - BlocksHelper.setWithoutUpdate(world, POS, state); - place = false; + // Liquids + else if (!state.getFluidState().isEmpty()) { + POS.setY(y - 1); + if (world.isAir(POS)) { + POS.setY(y); + while (!world.getFluidState(POS).isEmpty()) { + setWithoutUpdate(world, POS, AIR); + POS.setY(POS.getY() + 1); + } + continue; + } + BlockState st; + for (Direction dir : HORIZONTAL) { + if ((st = world.getBlockState(POS.offset(dir))).getMaterial().isReplaceable() && st.getFluidState().isEmpty()) { + world.getFluidTickScheduler().schedule(POS, state.getFluidState().getFluid(), 0); break; } } - if (place) { - BlocksHelper.setWithoutUpdate(world, POS, AIR); + if ((st = world.getBlockState(POS.up())).getMaterial().isReplaceable() && st.getFluidState().isEmpty()) { + world.getFluidTickScheduler().schedule(POS, state.getFluidState().getFluid(), 0); } - - POS.setY(y - ray); - BlocksHelper.setWithoutUpdate(world, POS, falling); } - } - // Blocks without support - else if (!state.canPlaceAt(world, POS)) { - // Blue Vine - if (state.getBlock() instanceof BlockBlueVine) { - while (state.isOf(EndBlocks.BLUE_VINE) || state.isOf(EndBlocks.BLUE_VINE_LANTERN) || state.isOf(EndBlocks.BLUE_VINE_FUR)) { - BlocksHelper.setWithoutUpdate(world, POS, AIR); - for (Direction dir : HORIZONTAL) { - BlockPos p = POS.offset(dir); - state = world.getBlockState(p); - if (state.getBlock() instanceof BlockGlowingFur) { - BlocksHelper.setWithoutUpdate(world, p, AIR); - } - world.getBlockTickScheduler().schedule(p, world.getBlockState(p).getBlock(), 0); + // Falling blocks + else if (state.getBlock() instanceof FallingBlock) { + BlockState falling = state; + + POS.setY(POS.getY() - 1); + state = world.getBlockState(POS); + + int ray = downRayRep(world, POS.toImmutable(), 64); + if (ray > 32) { + BlocksHelper.setWithoutUpdate(world, POS, Blocks.END_STONE.getDefaultState()); + if (world.getRandom().nextBoolean()) { + POS.setY(POS.getY() - 1); + state = world.getBlockState(POS); + BlocksHelper.setWithoutUpdate(world, POS, Blocks.END_STONE.getDefaultState()); } - POS.setY(POS.getY() + 1); - state = world.getBlockState(POS); + } + else { + POS.setY(y); + boolean place = true; + for (Direction dir : HORIZONTAL) { + state = world.getBlockState(POS.offset(dir)); + if (!state.getFluidState().isEmpty()) { + BlocksHelper.setWithoutUpdate(world, POS, state); + place = false; + break; + } + } + if (place) { + BlocksHelper.setWithoutUpdate(world, POS, AIR); + } + + POS.setY(y - ray); + BlocksHelper.setWithoutUpdate(world, POS, falling); } } - // Double plants - if (state.getBlock() instanceof BlockDoublePlant) { - BlocksHelper.setWithoutUpdate(world, POS, AIR); - POS.setY(POS.getY() + 1); - BlocksHelper.setWithoutUpdate(world, POS, AIR); - } - // Other blocks + // Blocks without support else { - BlocksHelper.setWithoutUpdate(world, POS, AIR); + // Blue Vine + if (state.getBlock() instanceof BlockBlueVine) { + while (state.isOf(EndBlocks.BLUE_VINE) || state.isOf(EndBlocks.BLUE_VINE_LANTERN) || state.isOf(EndBlocks.BLUE_VINE_FUR)) { + BlocksHelper.setWithoutUpdate(world, POS, AIR); + for (Direction dir : HORIZONTAL) { + BlockPos p = POS.offset(dir); + state = world.getBlockState(p); + if (state.getBlock() instanceof BlockGlowingFur) { + BlocksHelper.setWithoutUpdate(world, p, AIR); + } + world.getBlockTickScheduler().schedule(p, world.getBlockState(p).getBlock(), 0); + } + POS.setY(POS.getY() + 1); + state = world.getBlockState(POS); + } + } + // Double plants + if (state.getBlock() instanceof BlockDoublePlant) { + BlocksHelper.setWithoutUpdate(world, POS, AIR); + POS.setY(POS.getY() + 1); + BlocksHelper.setWithoutUpdate(world, POS, AIR); + } + // Other blocks + else { + BlocksHelper.setWithoutUpdate(world, POS, AIR); + } } } } diff --git a/src/main/java/ru/betterend/world/features/NBTStructureFeature.java b/src/main/java/ru/betterend/world/features/NBTStructureFeature.java index 0d49d983..3a0aedab 100644 --- a/src/main/java/ru/betterend/world/features/NBTStructureFeature.java +++ b/src/main/java/ru/betterend/world/features/NBTStructureFeature.java @@ -95,12 +95,12 @@ public abstract class NBTStructureFeature extends DefaultFeature { structure.place(world, center, placementData, random); TerrainMerge merge = getTerrainMerge(world, center, random); + int x1 = center.getX(); + int z1 = center.getZ(); + int x2 = x1 + offset.getX(); + int z2 = z1 + offset.getZ(); if (merge != TerrainMerge.NONE) { Mutable mut = new Mutable(); - int x1 = center.getX(); - int z1 = center.getZ(); - int x2 = x1 + offset.getX(); - int z2 = z1 + offset.getZ(); if (x2 < x1) { int a = x1; @@ -119,10 +119,10 @@ public abstract class NBTStructureFeature extends DefaultFeature { mut.setX(x); for (int z = z1; z <= z2; z++) { mut.setZ(z); - mut.setY(posY); + mut.setY(surfMax); BlockState state = world.getBlockState(mut); if (!state.isIn(EndTags.GEN_TERRAIN) && state.isSideSolidFullSquare(world, mut, Direction.DOWN)) { - for (int i = 0; i < 10; i--) { + for (int i = 0; i < 10; i++) { mut.setY(mut.getY() - 1); BlockState stateSt = world.getBlockState(mut); if (!stateSt.isIn(EndTags.GEN_TERRAIN)) { @@ -153,6 +153,7 @@ public abstract class NBTStructureFeature extends DefaultFeature { } } } + BlocksHelper.fixBlocks(world, new BlockPos(x1, center.getY(), z1), new BlockPos(x2, center.getY() + offset.getY(), z2)); return true; } diff --git a/src/main/java/ru/betterend/world/features/bushes/DragonTreeBushFeature.java b/src/main/java/ru/betterend/world/features/bushes/BushFeature.java similarity index 62% rename from src/main/java/ru/betterend/world/features/bushes/DragonTreeBushFeature.java rename to src/main/java/ru/betterend/world/features/bushes/BushFeature.java index a56f8f12..2e17a8f7 100644 --- a/src/main/java/ru/betterend/world/features/bushes/DragonTreeBushFeature.java +++ b/src/main/java/ru/betterend/world/features/bushes/BushFeature.java @@ -3,6 +3,7 @@ package ru.betterend.world.features.bushes; import java.util.Random; import java.util.function.Function; +import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.LeavesBlock; import net.minecraft.block.Material; @@ -12,7 +13,7 @@ import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.DefaultFeatureConfig; import ru.betterend.noise.OpenSimplexNoise; -import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndTags; import ru.betterend.util.BlocksHelper; import ru.betterend.util.MHelper; import ru.betterend.util.sdf.SDF; @@ -23,28 +24,46 @@ import ru.betterend.util.sdf.operator.SDFTranslate; import ru.betterend.util.sdf.primitive.SDFSphere; import ru.betterend.world.features.DefaultFeature; -public class DragonTreeBushFeature extends DefaultFeature { +public class BushFeature extends DefaultFeature { private static final Function REPLACE; + private final Block leaves; + private final Block stem; + + public BushFeature(Block leaves, Block stem) { + this.leaves = leaves; + this.stem = stem; + } @Override public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) { - if (world.getBlockState(pos.down()).getBlock() != EndBlocks.SHADOW_GRASS) return false; + if (!world.getBlockState(pos.down()).getBlock().isIn(EndTags.END_GROUND)) return false; - BlockState leaves = EndBlocks.DRAGON_TREE_LEAVES.getDefaultState().with(LeavesBlock.DISTANCE, 1); - float radius = MHelper.randRange(1.8F, 4.5F, random); + float radius = MHelper.randRange(1.8F, 3.5F, random); OpenSimplexNoise noise = new OpenSimplexNoise(random.nextInt()); - SDF sphere = new SDFSphere().setRadius(radius).setBlock(EndBlocks.DRAGON_TREE_LEAVES.getDefaultState().with(LeavesBlock.DISTANCE, 1)); + SDF sphere = new SDFSphere().setRadius(radius).setBlock(this.leaves); sphere = new SDFScale3D().setScale(1, 0.5F, 1).setSource(sphere); sphere = new SDFDisplacement().setFunction((vec) -> { return (float) noise.eval(vec.getX() * 0.2, vec.getY() * 0.2, vec.getZ() * 0.2) * 3; }).setSource(sphere); - sphere = new SDFDisplacement().setFunction((vec) -> { return random.nextFloat() * 3F - 1.5F; }).setSource(sphere); + sphere = new SDFDisplacement().setFunction((vec) -> { return MHelper.randRange(-2F, 2F, random); }).setSource(sphere); sphere = new SDFSubtraction().setSourceA(sphere).setSourceB(new SDFTranslate().setTranslate(0, -radius, 0).setSource(sphere)); sphere.setReplaceFunction(REPLACE); + sphere.setPostProcess((info) -> { + if (info.getState().getBlock() instanceof LeavesBlock) { + int distance = info.getPos().getManhattanDistance(pos); + if (distance < 7) { + return info.getState().with(LeavesBlock.DISTANCE, distance); + } + else { + return AIR; + } + } + return info.getState(); + }); sphere.fillRecursive(world, pos); - BlocksHelper.setWithoutUpdate(world, pos, EndBlocks.DRAGON_TREE.bark); + BlocksHelper.setWithoutUpdate(world, pos, stem); for (Direction d: Direction.values()) { BlockPos p = pos.offset(d); if (world.isAir(p)) { - BlocksHelper.setWithoutUpdate(world, p, leaves); + BlocksHelper.setWithoutUpdate(world, p, leaves.getDefaultState().with(LeavesBlock.DISTANCE, 1)); } } diff --git a/src/main/java/ru/betterend/world/features/bushes/PythadendronBushFeature.java b/src/main/java/ru/betterend/world/features/bushes/PythadendronBushFeature.java deleted file mode 100644 index f4140b8a..00000000 --- a/src/main/java/ru/betterend/world/features/bushes/PythadendronBushFeature.java +++ /dev/null @@ -1,54 +0,0 @@ -package ru.betterend.world.features.bushes; - -import java.util.Random; -import java.util.function.Function; - -import net.minecraft.block.BlockState; -import net.minecraft.block.LeavesBlock; -import net.minecraft.block.Material; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.StructureWorldAccess; -import net.minecraft.world.gen.chunk.ChunkGenerator; -import net.minecraft.world.gen.feature.DefaultFeatureConfig; -import ru.betterend.noise.OpenSimplexNoise; -import ru.betterend.registry.EndBlocks; -import ru.betterend.util.BlocksHelper; -import ru.betterend.util.MHelper; -import ru.betterend.util.sdf.SDF; -import ru.betterend.util.sdf.operator.SDFDisplacement; -import ru.betterend.util.sdf.operator.SDFScale3D; -import ru.betterend.util.sdf.operator.SDFSubtraction; -import ru.betterend.util.sdf.operator.SDFTranslate; -import ru.betterend.util.sdf.primitive.SDFSphere; -import ru.betterend.world.features.DefaultFeature; - -public class PythadendronBushFeature extends DefaultFeature { - private static final Function REPLACE; - - @Override - public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) { - if (world.getBlockState(pos.down()).getBlock() != EndBlocks.CHORUS_NYLIUM) return false; - - float radius = MHelper.randRange(1.8F, 4.5F, random); - OpenSimplexNoise noise = new OpenSimplexNoise(random.nextInt()); - SDF sphere = new SDFSphere().setRadius(radius).setBlock(EndBlocks.PYTHADENDRON_LEAVES.getDefaultState().with(LeavesBlock.DISTANCE, 1)); - sphere = new SDFScale3D().setScale(1, 0.5F, 1).setSource(sphere); - sphere = new SDFDisplacement().setFunction((vec) -> { return (float) noise.eval(vec.getX() * 0.2, vec.getY() * 0.2, vec.getZ() * 0.2) * 3; }).setSource(sphere); - sphere = new SDFDisplacement().setFunction((vec) -> { return random.nextFloat() * 3F - 1.5F; }).setSource(sphere); - sphere = new SDFSubtraction().setSourceA(sphere).setSourceB(new SDFTranslate().setTranslate(0, -radius, 0).setSource(sphere)); - sphere.setReplaceFunction(REPLACE); - sphere.fillRecursive(world, pos); - BlocksHelper.setWithoutUpdate(world, pos, EndBlocks.PYTHADENDRON.bark); - - return true; - } - - static { - REPLACE = (state) -> { - if (state.getMaterial().equals(Material.PLANT)) { - return true; - } - return state.getMaterial().isReplaceable(); - }; - } -} diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index aa32952f..8d2109ae 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -5,7 +5,7 @@ "biome.betterend.dust_wastelands": "Dust Wastelands", "biome.betterend.chorus_forest": "Chorus Forest", "biome.betterend.megalake": "Megalake", - "biome.betterend.crystal_mountains": "Crystal Mountains", + "biome.betterend.crystal_mountains": "Crystal Mountains", "entity.betterend.dragonfly": "Dragonfly", "item.betterend.spawn_egg_dragonfly": "Dragonfly Spawn Egg", @@ -198,79 +198,79 @@ "block.betterend.cave_grass": "Cave Grass", "block.betterend.cave_bush": "Cave Bush", - "block.betterend.cave_moss_path": "Cave Moss Path", - "block.betterend.crystal_moss": "Crystal Moss", - "block.betterend.crystal_moss_path": "Crystal Moss Path", - "block.betterend.pythadendron_leaves": "Pythadendron Leaves", - "item.betterend.spawn_egg_end_fish": "End Fish Spawn Egg", + "block.betterend.cave_moss_path": "Cave Moss Path", + "block.betterend.crystal_moss": "Crystal Moss", + "block.betterend.crystal_moss_path": "Crystal Moss Path", + "block.betterend.pythadendron_leaves": "Pythadendron Leaves", + "item.betterend.spawn_egg_end_fish": "End Fish Spawn Egg", "block.betterend.crystal_grass": "Crystal Grass", "block.betterend.flavolite_runed": "Runed Flavolite", "block.betterend.end_portal_block": "End Portal", - "block.betterend.eternal_pedestal": "Eternal Pedestal", + "block.betterend.eternal_pedestal": "Eternal Pedestal", "block.betterend.flavolite_runed_eternal": "Eternal Runed Flavolite", - "item.betterend.eternal_crystal": "Eternal Crystal", + "item.betterend.eternal_crystal": "Eternal Crystal", - "block.betterend.lacugrove_bark": "Lacugrove Bark", - "block.betterend.lacugrove_barrel": "Lacugrove Barrel", - "block.betterend.lacugrove_button": "Lacugrove Button", - "block.betterend.lacugrove_chest": "Lacugrove Chest", - "block.betterend.lacugrove_crafting_table": "Lacugrove Crafting Table", - "block.betterend.lacugrove_door": "Lacugrove Door", - "block.betterend.lacugrove_fence": "Lacugrove Fence", - "block.betterend.lacugrove_gate": "Lacugrove Gate", - "block.betterend.lacugrove_ladder": "Lacugrove Ladder", - "block.betterend.lacugrove_log": "Lacugrove Log", - "block.betterend.lacugrove_planks": "Lacugrove Planks", - "block.betterend.lacugrove_plate": "Lacugrove Plate", - "block.betterend.lacugrove_sign": "Lacugrove Sign", - "block.betterend.lacugrove_slab": "Lacugrove Slab", - "block.betterend.lacugrove_stairs": "Lacugrove Stairs", - "block.betterend.lacugrove_stripped_bark": "Lacugrove Stripped Bark", - "block.betterend.lacugrove_stripped_log": "Lacugrove Stripped Log", - "block.betterend.lacugrove_trapdoor": "Lacugrove Trapdoor", + "block.betterend.lacugrove_bark": "Lacugrove Bark", + "block.betterend.lacugrove_barrel": "Lacugrove Barrel", + "block.betterend.lacugrove_button": "Lacugrove Button", + "block.betterend.lacugrove_chest": "Lacugrove Chest", + "block.betterend.lacugrove_crafting_table": "Lacugrove Crafting Table", + "block.betterend.lacugrove_door": "Lacugrove Door", + "block.betterend.lacugrove_fence": "Lacugrove Fence", + "block.betterend.lacugrove_gate": "Lacugrove Gate", + "block.betterend.lacugrove_ladder": "Lacugrove Ladder", + "block.betterend.lacugrove_log": "Lacugrove Log", + "block.betterend.lacugrove_planks": "Lacugrove Planks", + "block.betterend.lacugrove_plate": "Lacugrove Plate", + "block.betterend.lacugrove_sign": "Lacugrove Sign", + "block.betterend.lacugrove_slab": "Lacugrove Slab", + "block.betterend.lacugrove_stairs": "Lacugrove Stairs", + "block.betterend.lacugrove_stripped_bark": "Lacugrove Stripped Bark", + "block.betterend.lacugrove_stripped_log": "Lacugrove Stripped Log", + "block.betterend.lacugrove_trapdoor": "Lacugrove Trapdoor", - "block.betterend.lacugrove_leaves": "Lacugrove Leaves", - "block.betterend.lacugrove_sapling": "Lacugrove Sapling", + "block.betterend.lacugrove_leaves": "Lacugrove Leaves", + "block.betterend.lacugrove_sapling": "Lacugrove Sapling", - "biome.betterend.megalake_grove": "Megalake Grove", - "biome.betterend.painted_mountains": "Painted Mountains", + "biome.betterend.megalake_grove": "Megalake Grove", + "biome.betterend.painted_mountains": "Painted Mountains", - "block.betterend.dragon_tree_bark": "Dragon Tree Bark", - "block.betterend.dragon_tree_barrel": "Dragon Tree Barrel", - "block.betterend.dragon_tree_button": "Dragon Tree Button", - "block.betterend.dragon_tree_chest": "Dragon Tree Chest", - "block.betterend.dragon_tree_crafting_table": "Dragon Tree Crafting Table", - "block.betterend.dragon_tree_door": "Dragon Tree Door", - "block.betterend.dragon_tree_fence": "Dragon Tree Fence", - "block.betterend.dragon_tree_gate": "Dragon Tree Gate", - "block.betterend.dragon_tree_ladder": "Dragon Tree Ladder", - "block.betterend.dragon_tree_log": "Dragon Tree Log", - "block.betterend.dragon_tree_planks": "Dragon Tree Planks", - "block.betterend.dragon_tree_plate": "Dragon Tree Plate", - "block.betterend.dragon_tree_sign": "Dragon Tree Sign", - "block.betterend.dragon_tree_slab": "Dragon Tree Slab", - "block.betterend.dragon_tree_stairs": "Dragon Tree Stairs", - "block.betterend.dragon_tree_stripped_bark": "Dragon Tree Stripped Bark", - "block.betterend.dragon_tree_stripped_log": "Dragon Tree Stripped Log", - "block.betterend.dragon_tree_trapdoor": "Dragon Tree Trapdoor", + "block.betterend.dragon_tree_bark": "Dragon Tree Bark", + "block.betterend.dragon_tree_barrel": "Dragon Tree Barrel", + "block.betterend.dragon_tree_button": "Dragon Tree Button", + "block.betterend.dragon_tree_chest": "Dragon Tree Chest", + "block.betterend.dragon_tree_crafting_table": "Dragon Tree Crafting Table", + "block.betterend.dragon_tree_door": "Dragon Tree Door", + "block.betterend.dragon_tree_fence": "Dragon Tree Fence", + "block.betterend.dragon_tree_gate": "Dragon Tree Gate", + "block.betterend.dragon_tree_ladder": "Dragon Tree Ladder", + "block.betterend.dragon_tree_log": "Dragon Tree Log", + "block.betterend.dragon_tree_planks": "Dragon Tree Planks", + "block.betterend.dragon_tree_plate": "Dragon Tree Plate", + "block.betterend.dragon_tree_sign": "Dragon Tree Sign", + "block.betterend.dragon_tree_slab": "Dragon Tree Slab", + "block.betterend.dragon_tree_stairs": "Dragon Tree Stairs", + "block.betterend.dragon_tree_stripped_bark": "Dragon Tree Stripped Bark", + "block.betterend.dragon_tree_stripped_log": "Dragon Tree Stripped Log", + "block.betterend.dragon_tree_trapdoor": "Dragon Tree Trapdoor", "biome.betterend.shadow_forest": "Shadow Forest", - "block.betterend.dragon_tree_leaves": "Dragon Tree Leaves", - "block.betterend.dragon_tree_sapling": "Dragon Tree Sapling", - "block.betterend.shadow_grass": "Shadow Grass", - "block.betterend.shadow_grass_path": "Shadow Grass Path", - "block.betterend.shadow_plant": "Shadow Plant", + "block.betterend.dragon_tree_leaves": "Dragon Tree Leaves", + "block.betterend.dragon_tree_sapling": "Dragon Tree Sapling", + "block.betterend.shadow_grass": "Shadow Grass", + "block.betterend.shadow_grass_path": "Shadow Grass Path", + "block.betterend.shadow_plant": "Shadow Plant", - "block.betterend.dragon_tree_bookshelf": "Dragon Tree Bookshelf", - "block.betterend.end_lotus_bookshelf": "End Lotus Bookshelf", - "block.betterend.lacugrove_bookshelf": "Lacugrove Bookshelf", - "block.betterend.mossy_glowshroom_bookshelf": "Mossy Glowshroom Bookshelf", - "block.betterend.pythadendron_bookshelf": "Pythadendron Bookshelf", + "block.betterend.dragon_tree_bookshelf": "Dragon Tree Bookshelf", + "block.betterend.end_lotus_bookshelf": "End Lotus Bookshelf", + "block.betterend.lacugrove_bookshelf": "Lacugrove Bookshelf", + "block.betterend.mossy_glowshroom_bookshelf": "Mossy Glowshroom Bookshelf", + "block.betterend.pythadendron_bookshelf": "Pythadendron Bookshelf", - "block.betterend.murkweed": "Murkweed", - "block.betterend.needlegrass": "Needlegrass", - "block.betterend.twisted_vine": "Twisted Vine", + "block.betterend.murkweed": "Murkweed", + "block.betterend.needlegrass": "Needlegrass", + "block.betterend.twisted_vine": "Twisted Vine", "block.betterend.shadow_berry": "Shadow Berry Seeds", "item.betterend.shadow_berry_cooked": "Shadow Berry Cooked", @@ -278,22 +278,26 @@ "block.betterend.purple_polypore": "Purple Polypore", "block.betterend.cyan_moss": "Cyan Moss", - "block.betterend.tail_moss": "Tail Moss", + "block.betterend.tail_moss": "Tail Moss", - "block.betterend.flavolite_lantern": "Flavolite Lantern", - "block.betterend.end_stone_lantern": "End Stone Lantern", - "block.betterend.violecite_lantern": "Violecite Lantern", + "block.betterend.flavolite_lantern": "Flavolite Lantern", + "block.betterend.end_stone_lantern": "End Stone Lantern", + "block.betterend.violecite_lantern": "Violecite Lantern", - "biome.betterend.dragonfly": "Dragonfly", - "biome.betterend.end_fish": "End Fish", - "biome.betterend.end_slime": "End Slime", - "biome.betterend.shadow_walker": "Shadow Walker", - "item.betterend.spawn_egg_shadow_walker": "Shadow Walker Spawn Egg", + "biome.betterend.dragonfly": "Dragonfly", + "biome.betterend.end_fish": "End Fish", + "biome.betterend.end_slime": "End Slime", + "biome.betterend.shadow_walker": "Shadow Walker", + "item.betterend.spawn_egg_shadow_walker": "Shadow Walker Spawn Egg", - "block.betterend.andesite_lantern": "Andesite Lantern", - "block.betterend.blackstone_lantern": "Blackstone Lantern", - "block.betterend.diorite_lantern": "Diorite Lantern", - "block.betterend.granite_lantern": "Granite Lantern", - "block.betterend.purpur_lantern": "Purpur Lantern", - "block.betterend.quartz_lantern": "Quartz Lantern" + "block.betterend.andesite_lantern": "Andesite Lantern", + "block.betterend.blackstone_lantern": "Blackstone Lantern", + "block.betterend.diorite_lantern": "Diorite Lantern", + "block.betterend.granite_lantern": "Granite Lantern", + "block.betterend.purpur_lantern": "Purpur Lantern", + "block.betterend.quartz_lantern": "Quartz Lantern", + + "item.betterend.bucket_end_fish": "End Fish Bucket", + "item.betterend.end_fish_cooked": "Cooked End Fish", + "item.betterend.end_fish_raw": "End Fish" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/lang/ru_ru.json b/src/main/resources/assets/betterend/lang/ru_ru.json index 9cd4da2e..2642ac97 100644 --- a/src/main/resources/assets/betterend/lang/ru_ru.json +++ b/src/main/resources/assets/betterend/lang/ru_ru.json @@ -10,15 +10,15 @@ "entity.betterend.dragonfly": "Стрекоза", "item.betterend.spawn_egg_dragonfly": "Яйцо призыва стрекозы", - "entity.betterend.end_slime": "Слизень края", - "item.betterend.spawn_egg_end_slime": "Яйцо призыва слизня края", + "entity.betterend.end_slime": "Слизень Края", + "item.betterend.spawn_egg_end_slime": "Яйцо призыва слизня Края", - "block.betterend.end_mycelium": "Мицелий края", - "block.betterend.end_moss": "Мох края", + "block.betterend.end_mycelium": "Мицелий Края", + "block.betterend.end_moss": "Мох Края", "block.betterend.endstone_dust": "Эндерняковая пыль", - "block.betterend.end_mycelium_path": "Тропа из мицелия края", - "block.betterend.end_moss_path": "Тропа из мха края", + "block.betterend.end_mycelium_path": "Тропа из мицелия Края", + "block.betterend.end_moss_path": "Тропа из мха Края", "block.betterend.ender_ore": "Руда Края", "block.betterend.terminite_block": "Блок Терминита", @@ -170,29 +170,29 @@ "block.betterend.quartz_pedestal": "Пьедестал из кварца", "block.betterend.infusion_pedestal": "Пьедестал Наполнения", - "block.betterend.end_lotus_seed": "Семя лотоса края", - "block.betterend.end_lotus_stem": "Стебель лотоса края", - "block.betterend.end_lotus_leaf": "Лист лотоса края", - "block.betterend.end_lotus_flower": "Цветок лотоса края", + "block.betterend.end_lotus_seed": "Семя лотоса Края", + "block.betterend.end_lotus_stem": "Стебель лотоса Края", + "block.betterend.end_lotus_leaf": "Лист лотоса Края", + "block.betterend.end_lotus_flower": "Цветок лотоса Края", - "block.betterend.end_lotus_bark": "Кора лотоса края", - "block.betterend.end_lotus_barrel": "Бочка из лотоса края", - "block.betterend.end_lotus_button": "Кнопка из лотоса края", - "block.betterend.end_lotus_chest": "Сундук из лотоса края", - "block.betterend.end_lotus_crafting_table": "Верстак из лотоса края", - "block.betterend.end_lotus_door": "Дверь из лотоса края", - "block.betterend.end_lotus_fence": "Забор из лотоса края", - "block.betterend.end_lotus_gate": "Калитка из лотоса края", - "block.betterend.end_lotus_ladder": "Лестница из лотоса края", - "block.betterend.end_lotus_log": "Бревно лотоса края", - "block.betterend.end_lotus_planks": "Доски лотоса края", - "block.betterend.end_lotus_plate": "Нажимная плита из лотоса края", - "block.betterend.end_lotus_sign": "Ьабличка из лотоса края", - "block.betterend.end_lotus_slab": "Плита из лотоса края", - "block.betterend.end_lotus_stairs": "Ступени из лотоса края", - "block.betterend.end_lotus_stripped_bark": "Обтёсанная кора лотоса края", - "block.betterend.end_lotus_stripped_log": "Обтёсанное бревно лотоса края", - "block.betterend.end_lotus_trapdoor": "Люк из лотоса края", + "block.betterend.end_lotus_bark": "Кора лотоса Края", + "block.betterend.end_lotus_barrel": "Бочка из лотоса Края", + "block.betterend.end_lotus_button": "Кнопка из лотоса Края", + "block.betterend.end_lotus_chest": "Сундук из лотоса Края", + "block.betterend.end_lotus_crafting_table": "Верстак из лотоса Края", + "block.betterend.end_lotus_door": "Дверь из лотоса Края", + "block.betterend.end_lotus_fence": "Забор из лотоса Края", + "block.betterend.end_lotus_gate": "Калитка из лотоса Края", + "block.betterend.end_lotus_ladder": "Лестница из лотоса Края", + "block.betterend.end_lotus_log": "Бревно лотоса Края", + "block.betterend.end_lotus_planks": "Доски лотоса Края", + "block.betterend.end_lotus_plate": "Нажимная плита из лотоса Края", + "block.betterend.end_lotus_sign": "Ьабличка из лотоса Края", + "block.betterend.end_lotus_slab": "Плита из лотоса Края", + "block.betterend.end_lotus_stairs": "Ступени из лотоса Края", + "block.betterend.end_lotus_stripped_bark": "Обтёсанная кора лотоса Края", + "block.betterend.end_lotus_stripped_log": "Обтёсанное бревно лотоса Края", + "block.betterend.end_lotus_trapdoor": "Люк из лотоса Края", "block.betterend.cave_moss": "Пещерный мох", "block.betterend.cave_grass": "Пещерная трава", @@ -265,7 +265,7 @@ "block.betterend.shadow_plant": "Теневое растение", "block.betterend.dragon_tree_bookshelf": "Книжные полки из драконова древа", - "block.betterend.end_lotus_bookshelf": "Книжные полки из лотоса края", + "block.betterend.end_lotus_bookshelf": "Книжные полки из лотоса Края", "block.betterend.lacugrove_bookshelf": "Книжные полки из оземангра", "block.betterend.mossy_glowshroom_bookshelf": "Книжные полки из мшистого светогриба", "block.betterend.pythadendron_bookshelf": "Книжные полки из пифадендрона", @@ -283,12 +283,12 @@ "block.betterend.tail_moss": "Хвостовидный мох", "block.betterend.flavolite_lantern": "Флаволитовый фонарь", - "block.betterend.end_stone_lantern": "Фонарь из камня края", + "block.betterend.end_stone_lantern": "Фонарь из камня Края", "block.betterend.violecite_lantern": "Виолецитовый фонарь", "biome.betterend.dragonfly": "Стрекоза", - "biome.betterend.end_fish": "Рыба края", - "biome.betterend.end_slime": "Слизень края", + "biome.betterend.end_fish": "Рыба Края", + "biome.betterend.end_slime": "Слизень Края", "biome.betterend.shadow_walker": "Теневой ходок", "item.betterend.spawn_egg_shadow_walker": "Яйцо призыва теневого ходока", @@ -297,5 +297,9 @@ "block.betterend.diorite_lantern": "Диоритовый фонарь", "block.betterend.granite_lantern": "Гранитный фонарь", "block.betterend.purpur_lantern": "Пурпуровый фонарь", - "block.betterend.quartz_lantern": "Кварцевый фонарь" + "block.betterend.quartz_lantern": "Кварцевый фонарь", + + "item.betterend.bucket_end_fish": "Ведро с рыбой Края", + "item.betterend.end_fish_cooked": "Приготовленная рыба Края", + "item.betterend.end_fish_raw": "Рыба Края" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/block/cyan_moss.json b/src/main/resources/assets/betterend/materialmaps/block/cyan_moss.json index 1cc4c628..45210670 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/cyan_moss.json +++ b/src/main/resources/assets/betterend/materialmaps/block/cyan_moss.json @@ -1,3 +1,3 @@ { - "defaultMaterial": "betterend:waving_wall_glow_inc" + "defaultMaterial": "betterend:waving_wall" } diff --git a/src/main/resources/assets/betterend/models/item/bucket_end_fish.json b/src/main/resources/assets/betterend/models/item/bucket_end_fish.json new file mode 100644 index 00000000..456f7496 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/bucket_end_fish.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:item/bucket_end_fish" + } +} diff --git a/src/main/resources/assets/betterend/models/item/end_fish_cooked.json b/src/main/resources/assets/betterend/models/item/end_fish_cooked.json new file mode 100644 index 00000000..2766fa5e --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/end_fish_cooked.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:item/end_fish_cooked" + } +} diff --git a/src/main/resources/assets/betterend/models/item/end_fish_raw.json b/src/main/resources/assets/betterend/models/item/end_fish_raw.json new file mode 100644 index 00000000..be102442 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/end_fish_raw.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:item/end_fish" + } +} diff --git a/src/main/resources/assets/betterend/textures/item/bucket_end_fish.png b/src/main/resources/assets/betterend/textures/item/bucket_end_fish.png new file mode 100644 index 00000000..63985c68 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/bucket_end_fish.png differ diff --git a/src/main/resources/assets/betterend/textures/item/end_fish.png b/src/main/resources/assets/betterend/textures/item/end_fish.png new file mode 100644 index 00000000..26dc6844 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/end_fish.png differ diff --git a/src/main/resources/assets/betterend/textures/item/end_fish_cooked.png b/src/main/resources/assets/betterend/textures/item/end_fish_cooked.png new file mode 100644 index 00000000..87ecdb6d Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/end_fish_cooked.png differ diff --git a/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/fallen_tree_1.nbt b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/fallen_tree_1.nbt new file mode 100644 index 00000000..9ba61b15 Binary files /dev/null and b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/fallen_tree_1.nbt differ diff --git a/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/fallen_tree_2.nbt b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/fallen_tree_2.nbt new file mode 100644 index 00000000..1b585a6f Binary files /dev/null and b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/fallen_tree_2.nbt differ diff --git a/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/library.nbt b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/library.nbt new file mode 100644 index 00000000..bf3c0cd0 Binary files /dev/null and b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/library.nbt differ diff --git a/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/ruins_1.nbt b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/ruins_1.nbt new file mode 100644 index 00000000..278b78c7 Binary files /dev/null and b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/ruins_1.nbt differ diff --git a/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/ruins_2.nbt b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/ruins_2.nbt new file mode 100644 index 00000000..acfc4d60 Binary files /dev/null and b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/ruins_2.nbt differ diff --git a/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/ruins_3.nbt b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/ruins_3.nbt new file mode 100644 index 00000000..1377ae93 Binary files /dev/null and b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/ruins_3.nbt differ diff --git a/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/structures.json b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/structures.json new file mode 100644 index 00000000..375709a0 --- /dev/null +++ b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/structures.json @@ -0,0 +1,13 @@ +{ + "structures": [ + { "nbt": "fallen_tree_1", "offsetY": 0, "terrainMerge": "object" }, + { "nbt": "fallen_tree_2", "offsetY": 0, "terrainMerge": "object" }, + { "nbt": "stump_1", "offsetY": 0, "terrainMerge": "object" }, + { "nbt": "stump_2", "offsetY": 0, "terrainMerge": "object" }, + { "nbt": "library", "offsetY": 0, "terrainMerge": "surface" }, + { "nbt": "ruins_1", "offsetY": 0, "terrainMerge": "surface" }, + { "nbt": "ruins_2", "offsetY": 0, "terrainMerge": "surface" }, + { "nbt": "ruins_3", "offsetY": 0, "terrainMerge": "surface" }, + { "nbt": "tree_house", "offsetY": 0, "terrainMerge": "surface" } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/stump_1.nbt b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/stump_1.nbt new file mode 100644 index 00000000..60e68687 Binary files /dev/null and b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/stump_1.nbt differ diff --git a/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/stump_2.nbt b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/stump_2.nbt new file mode 100644 index 00000000..285afc8b Binary files /dev/null and b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/stump_2.nbt differ diff --git a/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/tree_house.nbt b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/tree_house.nbt new file mode 100644 index 00000000..fc2eb3d2 Binary files /dev/null and b/src/main/resources/data/betterend/structures/biome/foggy_mushroomland/tree_house.nbt differ