From 49bf8441e61fb6ff8b11ea4dc76bebeb4da17915 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Tue, 19 Jan 2021 00:28:41 +0300 Subject: [PATCH] Removed tree and unfinished biome --- .../entities/EndStoneSmelterBlockEntity.java | 16 +- .../common/ServerPlayNetworkHandlerMixin.java | 15 +- .../mixin/common/ServerPlayerEntityMixin.java | 35 +++-- .../java/ru/betterend/registry/EndBiomes.java | 3 - .../java/ru/betterend/registry/EndBlocks.java | 17 -- .../ru/betterend/registry/EndFeatures.java | 2 - .../world/biome/CapsacisForestBiome.java | 24 --- .../world/biome/HangingGardensBiome.java | 18 --- .../features/trees/CapsacisTreeFeature.java | 146 ------------------ .../betterend/textures/block/capsacis_cap.png | Bin 2189 -> 0 bytes .../textures/block/capsacis_cap_0.png | Bin 1565 -> 0 bytes .../textures/block/capsacis_cap_1.png | Bin 1563 -> 0 bytes .../textures/block/capsacis_cap_2.png | Bin 1554 -> 0 bytes .../textures/block/capsacis_cap_3.png | Bin 1540 -> 0 bytes .../textures/block/capsacis_cap_4.png | Bin 1520 -> 0 bytes .../textures/block/capsacis_cap_5.png | Bin 1506 -> 0 bytes .../textures/block/capsacis_cap_6.png | Bin 1480 -> 0 bytes .../textures/block/capsacis_cap_7.png | Bin 1477 -> 0 bytes .../textures/block/capsacis_cap__22.png | Bin 2233 -> 0 bytes .../textures/block/capsacis_log_side.png | Bin 1837 -> 0 bytes .../textures/block/capsacis_log_side_2.png | Bin 1839 -> 0 bytes .../textures/block/capsacis_log_side_3.png | Bin 1842 -> 0 bytes .../textures/block/capsacis_log_top.png | Bin 1741 -> 0 bytes .../textures/block/capsacis_planks.png | Bin 2864 -> 0 bytes .../block/capsacis_stripped_log_side.png | Bin 432 -> 0 bytes .../block/capsacis_stripped_log_top.png | Bin 374 -> 0 bytes 26 files changed, 39 insertions(+), 237 deletions(-) delete mode 100644 src/main/java/ru/betterend/world/biome/CapsacisForestBiome.java delete mode 100644 src/main/java/ru/betterend/world/biome/HangingGardensBiome.java delete mode 100644 src/main/java/ru/betterend/world/features/trees/CapsacisTreeFeature.java delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_cap.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_cap_0.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_cap_1.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_cap_2.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_cap_3.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_cap_4.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_cap_5.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_cap_6.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_cap_7.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_cap__22.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_log_side.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_log_side_2.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_log_side_3.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_log_top.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_planks.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_stripped_log_side.png delete mode 100644 src/main/resources/assets/betterend/textures/block/capsacis_stripped_log_top.png diff --git a/src/main/java/ru/betterend/blocks/entities/EndStoneSmelterBlockEntity.java b/src/main/java/ru/betterend/blocks/entities/EndStoneSmelterBlockEntity.java index 54b3fcc1..05020b72 100644 --- a/src/main/java/ru/betterend/blocks/entities/EndStoneSmelterBlockEntity.java +++ b/src/main/java/ru/betterend/blocks/entities/EndStoneSmelterBlockEntity.java @@ -1,7 +1,12 @@ package ru.betterend.blocks.entities; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + import com.google.common.collect.Lists; import com.google.common.collect.Maps; + import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import net.minecraft.block.BlockState; @@ -17,7 +22,12 @@ import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.nbt.CompoundTag; -import net.minecraft.recipe.*; +import net.minecraft.recipe.BlastingRecipe; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeFinder; +import net.minecraft.recipe.RecipeInputProvider; +import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.RecipeUnlocker; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; import net.minecraft.text.Text; @@ -35,10 +45,6 @@ import ru.betterend.client.gui.EndStoneSmelterScreenHandler; import ru.betterend.recipe.builders.AlloyingRecipe; import ru.betterend.registry.EndBlockEntities; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - public class EndStoneSmelterBlockEntity extends LockableContainerBlockEntity implements SidedInventory, RecipeUnlocker, RecipeInputProvider, Tickable { private static final int[] TOP_SLOTS = new int[] { 0, 1 }; diff --git a/src/main/java/ru/betterend/mixin/common/ServerPlayNetworkHandlerMixin.java b/src/main/java/ru/betterend/mixin/common/ServerPlayNetworkHandlerMixin.java index d0644012..471ed720 100644 --- a/src/main/java/ru/betterend/mixin/common/ServerPlayNetworkHandlerMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ServerPlayNetworkHandlerMixin.java @@ -1,5 +1,13 @@ package ru.betterend.mixin.common; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.network.NetworkThreadUtils; @@ -10,13 +18,6 @@ import net.minecraft.server.world.ServerWorld; import net.minecraft.text.LiteralText; import net.minecraft.util.Formatting; import net.minecraft.util.math.BlockPos; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import ru.betterend.blocks.entities.ESignBlockEntity; @Mixin(ServerPlayNetworkHandler.class) diff --git a/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java b/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java index ed57ad0a..ae19c112 100644 --- a/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java @@ -1,30 +1,35 @@ package ru.betterend.mixin.common; -import com.mojang.authlib.GameProfile; -import net.minecraft.entity.Entity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.network.packet.s2c.play.*; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.PlayerManager; -import net.minecraft.server.network.ServerPlayNetworkHandler; -import net.minecraft.server.network.ServerPlayerInteractionManager; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.TeleportTarget; -import net.minecraft.world.World; -import net.minecraft.world.WorldProperties; -import net.minecraft.world.biome.source.BiomeAccess; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import com.mojang.authlib.GameProfile; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.packet.s2c.play.DifficultyS2CPacket; +import net.minecraft.network.packet.s2c.play.EntityStatusEffectS2CPacket; +import net.minecraft.network.packet.s2c.play.PlayerAbilitiesS2CPacket; +import net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket; +import net.minecraft.network.packet.s2c.play.WorldEventS2CPacket; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.PlayerManager; +import net.minecraft.server.network.ServerPlayNetworkHandler; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.network.ServerPlayerInteractionManager; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.TeleportTarget; +import net.minecraft.world.World; +import net.minecraft.world.WorldProperties; +import net.minecraft.world.biome.source.BiomeAccess; import ru.betterend.interfaces.TeleportingEntity; @Mixin(ServerPlayerEntity.class) diff --git a/src/main/java/ru/betterend/registry/EndBiomes.java b/src/main/java/ru/betterend/registry/EndBiomes.java index dc20d7ac..90fe5c39 100644 --- a/src/main/java/ru/betterend/registry/EndBiomes.java +++ b/src/main/java/ru/betterend/registry/EndBiomes.java @@ -43,7 +43,6 @@ import ru.betterend.world.biome.BiomePaintedMountains; import ru.betterend.world.biome.BiomeShadowForest; import ru.betterend.world.biome.BiomeSulphurSprings; import ru.betterend.world.biome.BiomeUmbrellaJungle; -import ru.betterend.world.biome.CapsacisForestBiome; import ru.betterend.world.biome.EndBiome; import ru.betterend.world.generator.BELayerRandomSource; import ru.betterend.world.generator.BiomePicker; @@ -84,8 +83,6 @@ public class EndBiomes { public static final EndBiome BLOSSOMING_SPIRES = registerBiome(new BiomeBlossomingSpires(), BiomeType.LAND); public static final EndBiome SULPHUR_SPRINGS = registerBiome(new BiomeSulphurSprings(), BiomeType.LAND); public static final EndBiome UMBRELLA_JUNGLE = registerBiome(new BiomeUmbrellaJungle(), BiomeType.LAND); - public static final EndBiome CAPSACIS_FOREST = registerSubBiome(new CapsacisForestBiome(), CHORUS_FOREST); - //public static final EndBiome HANGING_GARDENS = registerBiome(new HangingGardensBiome(), BiomeType.LAND); // Better End Void public static final EndBiome ICE_STARFIELD = registerBiome(new BiomeIceStarfield(), BiomeType.VOID); diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 50dfbff9..44050d9e 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -20,7 +20,6 @@ import ru.betterend.blocks.BulbVineBlock; import ru.betterend.blocks.BulbVineLanternBlock; import ru.betterend.blocks.BulbVineLanternColoredBlock; import ru.betterend.blocks.BulbVineSeedBlock; -import ru.betterend.blocks.CapsacisCapBlock; import ru.betterend.blocks.CharniaBlock; import ru.betterend.blocks.ChorusGrassBlock; import ru.betterend.blocks.DenseEmeraldIceBlock; @@ -193,22 +192,6 @@ public class EndBlocks { public static final Block JELLYSHROOM_CAP_PURPLE = registerBlock("jellyshroom_cap_purple", new JellyshroomCapBlock(217, 142, 255, 164, 0, 255)); public static final WoodenMaterial JELLYSHROOM = new WoodenMaterial("jellyshroom", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); - // Tree from original concept (+ modifications) - public static final Block CAPSACIS_SAPLING = registerBlock("capsacis_sapling", new UmbrellaTreeSaplingBlock()); - public static final Block CAPSACIS_CAP = registerBlock("capsacis_cap", new CapsacisCapBlock()); - public static final WoodenMaterial CAPSACIS = new WoodenMaterial("capsacis", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); - - // Small ecosystem tree - //public static final WoodenMaterial INANIS = new WoodenMaterial("inanis", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); - - // Tree from Yuki's ide - //public static final Block CEMINUS_SAPLING = registerBlock("ceminus_sapling", new UmbrellaTreeSaplingBlock()); - //public static final Block CEMINUS_GRID = registerBlock("ceminus_grid", new UmbrellaTreeMembraneBlock()); - //public static final WoodenMaterial CEMINUS = new WoodenMaterial("ceminus", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); - - // For megacolonies - //public static final Block VOID_COLONY_MEMBRANE = registerBlock("void_colony_membrane", new UmbrellaTreeMembraneBlock()); - // Small Plants // public static final Block UMBRELLA_MOSS = registerBlock("umbrella_moss", new UmbrellaMossBlock()); public static final Block UMBRELLA_MOSS_TALL = registerBlock("umbrella_moss_tall", new UmbrellaMossTallBlock()); diff --git a/src/main/java/ru/betterend/registry/EndFeatures.java b/src/main/java/ru/betterend/registry/EndFeatures.java index de96bdbc..da3e61c1 100644 --- a/src/main/java/ru/betterend/registry/EndFeatures.java +++ b/src/main/java/ru/betterend/registry/EndFeatures.java @@ -43,7 +43,6 @@ import ru.betterend.world.features.terrain.SulphurHillFeature; import ru.betterend.world.features.terrain.SulphuricCaveFeature; import ru.betterend.world.features.terrain.SulphuricLakeFeature; import ru.betterend.world.features.terrain.SurfaceVentFeature; -import ru.betterend.world.features.trees.CapsacisTreeFeature; import ru.betterend.world.features.trees.DragonTreeFeature; import ru.betterend.world.features.trees.HelixTreeFeature; import ru.betterend.world.features.trees.JellyshroomFeature; @@ -64,7 +63,6 @@ public class EndFeatures { public static final EndFeature HELIX_TREE = new EndFeature("helix_tree", new HelixTreeFeature(), 2); public static final EndFeature UMBRELLA_TREE = new EndFeature("umbrella_tree", new UmbrellaTreeFeature(), 4); public static final EndFeature JELLYSHROOM = new EndFeature("jellyshroom", new JellyshroomFeature(), 3); - public static final EndFeature CAPSACIS = new EndFeature("capsacis", new CapsacisTreeFeature(), 3); // Bushes // public static final EndFeature PYTHADENDRON_BUSH = new EndFeature("pythadendron_bush", new BushFeature(EndBlocks.PYTHADENDRON_LEAVES, EndBlocks.PYTHADENDRON.bark), 4); diff --git a/src/main/java/ru/betterend/world/biome/CapsacisForestBiome.java b/src/main/java/ru/betterend/world/biome/CapsacisForestBiome.java deleted file mode 100644 index eaefb4ef..00000000 --- a/src/main/java/ru/betterend/world/biome/CapsacisForestBiome.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.betterend.world.biome; - -import net.minecraft.entity.EntityType; -import ru.betterend.registry.EndBlocks; -import ru.betterend.registry.EndFeatures; -import ru.betterend.registry.EndSounds; - -public class CapsacisForestBiome extends EndBiome { - public CapsacisForestBiome() { - super(new BiomeDefinition("capsacis_forest") - .setSurface(EndBlocks.CHORUS_NYLIUM) - .setMusic(EndSounds.MUSIC_FOREST) - .setWaterAndFogColor(84, 61, 127) - .setFoliageColor(71, 45, 120) - .setFogColor(78, 71, 92) - .setFogDensity(1.5F) - .addFeature(EndFeatures.CAPSACIS) - .addFeature(EndFeatures.PURPLE_POLYPORE) - .addFeature(EndFeatures.TAIL_MOSS_WOOD) - .addFeature(EndFeatures.TAIL_MOSS) - .addFeature(EndFeatures.CHORUS_GRASS) - .addMobSpawn(EntityType.ENDERMAN, 50, 1, 4)); - } -} diff --git a/src/main/java/ru/betterend/world/biome/HangingGardensBiome.java b/src/main/java/ru/betterend/world/biome/HangingGardensBiome.java deleted file mode 100644 index 3a6e2161..00000000 --- a/src/main/java/ru/betterend/world/biome/HangingGardensBiome.java +++ /dev/null @@ -1,18 +0,0 @@ -package ru.betterend.world.biome; - -import net.minecraft.entity.EntityType; -import ru.betterend.registry.EndBlocks; -import ru.betterend.registry.EndSounds; - -public class HangingGardensBiome extends EndBiome { - public HangingGardensBiome() { - super(new BiomeDefinition("hanging_gardens") - .setSurface(EndBlocks.SHADOW_GRASS, EndBlocks.CHORUS_NYLIUM) - .setMusic(EndSounds.MUSIC_FOREST) - .setWaterAndFogColor(84, 61, 127) - .setFoliageColor(71, 45, 120) - .setFogColor(78, 71, 92) - .setFogDensity(1.5F) - .addMobSpawn(EntityType.ENDERMAN, 50, 1, 4)); - } -} \ No newline at end of file diff --git a/src/main/java/ru/betterend/world/features/trees/CapsacisTreeFeature.java b/src/main/java/ru/betterend/world/features/trees/CapsacisTreeFeature.java deleted file mode 100644 index 12eae23b..00000000 --- a/src/main/java/ru/betterend/world/features/trees/CapsacisTreeFeature.java +++ /dev/null @@ -1,146 +0,0 @@ -package ru.betterend.world.features.trees; - -import java.util.List; -import java.util.Random; - -import com.google.common.base.Function; -import com.google.common.collect.Lists; - -import net.minecraft.block.BlockState; -import net.minecraft.client.util.math.Vector3f; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.StructureWorldAccess; -import net.minecraft.world.gen.chunk.ChunkGenerator; -import net.minecraft.world.gen.feature.DefaultFeatureConfig; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.registry.EndBlocks; -import ru.betterend.registry.EndTags; -import ru.betterend.util.MHelper; -import ru.betterend.util.SplineHelper; -import ru.betterend.util.sdf.SDF; -import ru.betterend.util.sdf.operator.SDFFlatWave; -import ru.betterend.util.sdf.operator.SDFScale; -import ru.betterend.util.sdf.operator.SDFSmoothUnion; -import ru.betterend.util.sdf.operator.SDFTranslate; -import ru.betterend.util.sdf.operator.SDFUnion; -import ru.betterend.util.sdf.primitive.SDFCappedCone; -import ru.betterend.util.sdf.primitive.SDFSphere; -import ru.betterend.world.features.DefaultFeature; - -public class CapsacisTreeFeature extends DefaultFeature { - private static final Function REPLACE; - private static final List ROOT; - - @Override - public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) { - if (!world.getBlockState(pos.down()).getBlock().isIn(EndTags.END_GROUND)) return false; - - int height = MHelper.randRange(20, 30, random); - List spline = SplineHelper.makeSpline(0, 0, 0, 0, height * 0.2F, 0, 5); - - BlockPos center = pos.up(9); - if (!SplineHelper.canGenerate(spline, center, world, REPLACE)) { - return false; - } - - BlockState woodState = EndBlocks.CAPSACIS.bark.getDefaultState(); - BlockState logState = EndBlocks.CAPSACIS.log.getDefaultState(); - BlockState capState = EndBlocks.CAPSACIS_CAP.getDefaultState(); - - SplineHelper.offsetParts(spline, random, 0.5F, 0, 0.5F); - SDF sdf = SplineHelper.buildSDF(spline, 2.5F, 0.8F, (bpos) -> { - return woodState; - }); - - final float scale = config == null ? 1 : MHelper.randRange(1, 1.5F, random); - final float offset = height * 0.2F; - final float radius = height * 0.25F; - final float heightScale = radius * 2 * scale; - final int count = MHelper.randRange(5, 7, random); - final float angle = random.nextFloat() * MHelper.PI2; - SDF cap = makeCap(offset, radius, count, angle, capState); - - sdf = new SDFUnion().setSourceA(sdf).setSourceB(cap); - SDF roots = makeRoots(world, center, height * 0.4F, random, woodState); - if (roots != null) { - sdf = new SDFUnion().setSourceA(sdf).setSourceB(roots); - } - sdf = new SDFScale().setScale(scale).setSource(sdf); - - sdf.addPostProcess((info) -> { - if (EndBlocks.CAPSACIS.isTreeLog(info.getStateUp()) && EndBlocks.CAPSACIS.isTreeLog(info.getStateDown())) { - return logState; - } - else if (info.getState().equals(capState)) { - double off = Math.cos(Math.atan2(info.getPos().getX() - pos.getX(), info.getPos().getZ() - pos.getZ()) * count + angle) * 2; - int color = (int) ((info.getPos().getY() - pos.getY() - radius) / heightScale * 7 + off); - color = 7 - MathHelper.clamp(color, 0, 7); - return info.getState().with(BlockProperties.COLOR, color); - } - return info.getState(); - }).fillRecursive(world, center); - - return true; - } - - private SDF makeCap(float offset, float radius, int count, float angle, BlockState capState) { - SDF cap = new SDFSphere().setRadius(radius).setBlock(capState); - SDF cone = new SDFCappedCone().setRadius1(radius).setRadius2(radius * 0.4F).setHeight(radius * 0.3F).setBlock(capState); - cone = new SDFTranslate().setTranslate(0, radius * 0.3F, 0).setSource(cone); - cap = new SDFSmoothUnion().setRadius(5).setSourceA(cap).setSourceB(cone); - SDF upperSphere = new SDFSphere().setRadius(radius * 0.4F).setBlock(capState); - upperSphere = new SDFTranslate().setTranslate(0, radius * 0.6F, 0).setSource(upperSphere); - cap = new SDFSmoothUnion().setRadius(5).setSourceA(cap).setSourceB(upperSphere); - cap = new SDFFlatWave().setAngle(angle).setRaysCount(count).setIntensity(1F).setSource(cap); - - cap = new SDFTranslate().setTranslate(0, offset, 0).setSource(cap); - - return cap; - } - - private SDF makeRoots(StructureWorldAccess world, BlockPos pos, float radius, Random random, BlockState state) { - int count = (int) (radius * 0.7F); - SDF roots = null; - for (int i = 0; i < count; i++) { - float angle = (float) i / (float) count * MHelper.PI2; - float scale = radius * MHelper.randRange(0.85F, 1.15F, random); - - List branch = SplineHelper.copySpline(ROOT); - SplineHelper.rotateSpline(branch, angle); - SplineHelper.scale(branch, scale); - SplineHelper.offsetParts(branch, random, 0.5F, 0.7F, 0.5F); - SDF sdf = SplineHelper.buildSDF(branch, 2F, 1F, (p) -> { return state; }); - roots = roots == null ? sdf : new SDFUnion().setSourceA(sdf).setSourceB(roots); - } - return roots; - /*for (int i = 0; i < count; i++) { - float angle = (float) i / (float) count * MHelper.PI2; - float scale = radius * MHelper.randRange(0.85F, 1.15F, random); - - List branch = SplineHelper.copySpline(ROOT); - SplineHelper.rotateSpline(branch, angle); - SplineHelper.scale(branch, scale); - SplineHelper.offsetParts(branch, random, 0.5F, 0.7F, 0.5F); - Vector3f last = branch.get(branch.size() - 1); - if (world.getBlockState(pos.add(last.getX(), last.getY(), last.getZ())).isIn(EndTags.GEN_TERRAIN)) { - SplineHelper.fillSpline(branch, world, state, pos, REPLACE); - } - }*/ - } - - static { - REPLACE = (state) -> { - return EndBlocks.CAPSACIS.isTreeLog(state) || state.getMaterial().isReplaceable(); - }; - - ROOT = Lists.newArrayList( - new Vector3f(0F, 1F, 0), - new Vector3f(0.1F, 0.7F, 0), - new Vector3f(0.3F, 0.3F, 0), - new Vector3f(0.7F, 0.05F, 0), - new Vector3f(0.8F, -0.2F, 0) - ); - SplineHelper.offset(ROOT, Vector3f.NEGATIVE_Y); - } -} diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_cap.png b/src/main/resources/assets/betterend/textures/block/capsacis_cap.png deleted file mode 100644 index ba60d3393b42fd6e39b58b761d110f85fc0aec47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2189 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 diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_cap_1.png b/src/main/resources/assets/betterend/textures/block/capsacis_cap_1.png deleted file mode 100644 index 59df594a19ef2f48bace117a3b89c69aae40e716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1563 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAX(zG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6Sh*NEJGweqnwwfWn;RMeS(Lv8`kW|!2W%(B!Jx1#)91+cfRGI6`b z6sLJmy(zfeVun+%KF~4xpvXmvY?u%*1%a6GqzmN06Mt$RFvS-EllJ@wQC0>9rfyFc z$B>F!DnZ`aB8~#Z0=GJ{KGBx<gw%vKRJ{j*%y3ckiT;+fBn^jhi8{b8nv&ycp zJt)I(hyv??%JW$ur!4yv){7v8OxM48`FaG zyu4(->{?{5=DsBH=eO?cjhzz=cW=M?ZJjH_2luD! z(K+|8zip_wJ=^(emx5J8UG)1Wm6_)v_w+p9Xy?QMyFY6FteVRyQxK*l7B5n#VIYwGb&~Bc;z4b%Ij$lIQ0w$(s38 zqT#d!lW?5tQpURMJ)52yu~dIuzwpAY@X~MT_))d!v1CwJ0Dd!iayD#)${U~%@S7X_d_5YqkE}i>tLtbaNd*$6z><+S5 zh04?#!YlS3x7nz@KYc%wsv4i~ex)q7Eo^ru`6|r~Nb1&0Z(fp zxZST~n2-EE=**|%sCi+l3M1<@-=I?sAD7-)sic2>&dTa{r`F7rne`;1l{;zS;mfMe zzf81T({-%J*j`PF#cFAUPj$EIiTR6n&OfzXbA7V)5skJhjOEUCMF!^^j|)Wm+Me<4 dSh=5xhao1|T{Qa7mtUab+SAp~Wt~$(69D-cMR))J diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_cap_2.png b/src/main/resources/assets/betterend/textures/block/capsacis_cap_2.png deleted file mode 100644 index 90826dd369edc96e14a2960e17e6769f0eaa9f34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1554 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAX(zG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6Sh*NEyPBA}8JJo+n;ROsI$1h9895tU zxVTwbx*EG#I>Yq3+b4WhYLT0-lZlf9f72sZ54}Ybn#28f{&4@p z{Ey+|E7f$@Jsk>*1ew$XV>}n_KAE@aonKjcS=Fx7_ac_-y;}XOTEuSkn)DOj4dyfH zw_H9jr^PHGp<719mO&vz=whNkz|L~@Ohvi0l@HQtFK=G+zggterd6!V-rs6j+wA!z z=!K`+ndF6&Wi)+U%VvmLN{HKq^`Dx<%qgt&|8z;xmiWTmx&I!#eziI_EAO?wp!?-l zr?l=1c1*m=)%v)g;VvKByJpwm{SU6rh^#xbmgh;>lP;D^3A)kzp;A{F+-6_7;az5O zglo^bH&cBt=AN?M8!hrwajw-uDJ9o9R&}+FyZGC6KN~+0XcXe;pXA0}vFC%!y1j?{ zbvK{Sxjg0N>^y~CxnFkQIT={!cBzxPX z3LJ2L$>UMEG=lv{Vv=*if{oux(lqAGaAf(_!KU0{s=~-~dBUz#eNL711u{2oG};9_ z&v$)xYSP37IyYD*3Gz$kFnnpNdMC1J!o>HPuXRqZNWUHV<$LMjt*n7MU9-CR8~RIw zl@z<0R`4E}to!${;+*Az{eBzcCyBBpANY5Tce(rLj({Hl1;Ki$ z^Xdzl-BGb;L!T^BmMd1#U)5@oHvP?0=3=LY`ztM5F8owJc-wQIr-z`|@(UkBX3U%N cwVsKG;lfYz6Lme)^g*Sxr>mdKI;Vst0P*}!`2YX_ diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_cap_3.png b/src/main/resources/assets/betterend/textures/block/capsacis_cap_3.png deleted file mode 100644 index e71f7d3568183030cbab92029d3bd24654dd3ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1540 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAX(zG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6Sh*NEyPBA}nV4ESn;ROsI$1h9895tU zxVTwbx*EG#I>Yq3s9EANRHzZ)M{*=xj0Cu zJY-}Lh+|)IhPTUDuYF0(I zsn6?TmP+~Xt-E~Kj#{Ps{U!GsyN{%tFn zl373Xwr^INTH;#KqU%eoJvD({ z`IUUqmFIE2Qrc-x_e9@WcrO2D%DH06%XfeMnxwO|tS0`Nw#np6D<*7Q2qxQZ&nDdOS z>-|q=ZnlFa8ex5JcYJdZ zRcW_5n0WY%!KSiL$KP`OnB=|H)aWw9nlqhiSEl&MC|+G*m-|TlM}*+|?&&QN2Csuw zMxELf_~Jn3>ynj48~p;ipUt1SytuCJ%;T2!?ljBAH8_5}?NQc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAX(zG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6Sh*NEyPBA}S(sWnn;ROsI$1h9895tU zxVTwbx*EG#I>Yq3U*w(8Nw2cY3X4`2J}9nVH<5vf+e35>-{01w3m)w8 z5j`t#!1vC|0u~P6tYbB&RMelj#|!OlT`zRG)IfX34$*t@<^H?@imig(49u6`9}tv? zC^Vmck()o~_7-ukROaoxlIQ(ew$2xtwroOqj`g?Wd|cd1@AM_V$SACS)hF&_d)!CB zMvSf5%53!=nSi2mcUSrdc>33-zYSrH{_%-ne{6yO$tebBYG%#c(sMFi&MhK#bAQ;K zS2N!pD^dx1F~Mx{N7=edX1{OMHtk)U5Wl!nK5RwRbn~cZeOnLOMwJKEJYSz9abLf# z#3)*Kd(iYq74<)@_RlA6dy+VLy3(Ki__Y}<*MqKaKQ-^bw$IL`%zE?L|3t9MUeqw$ z$R3}t?#Q)2Zwn2B8p@P{8(wz)e0ngJlO@tU{e#ZFh8UN^2aS^FdnaG`XR>>i$>f(F zZK-R%+?f;WvenAeA(#2(?;{H?{xZ$V(ErxsuebK8Q<|`ZX3||HQ;jlN-d7b}rcALi z>rYu;o1?x*w)4xErW+;c7GEEUJe9APaPVxj lnwd49aoV)AU+bB87_OZN&|0;_{R*fI_H^}gS?83{1OUWPG)n*g diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_cap_5.png b/src/main/resources/assets/betterend/textures/block/capsacis_cap_5.png deleted file mode 100644 index d479ebacb13395097e569c2e98546cd7ff7e1ce9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1506 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 diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_cap_7.png b/src/main/resources/assets/betterend/textures/block/capsacis_cap_7.png deleted file mode 100644 index 6bb18653d1cacee7da439cdc28d0dfbc04294592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1477 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAX(zG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6Sh*Ov7#mr*S(;ipn;ROsI$1h9895tU zxVTwbx*EG#I>Yq3etkdV2=D2y|n#-3Kcv>2WUXZovS+2%!A~kDo<-e7g z+2z5fC-L9D-a9wdEAZCw8k0P~km#0K2No86dc%LWsnMus{?_+ODskf1-QMKcC_bFB z*dfGgS{?V*WizfBoD~Z7(b_Y8rqCxXf9^M~d{rj}I(w%!POV#Tl`U=UmK$F$Fr7AieU7VUIcu+~H3xj1LdrhOZ~%e@nF71?}Q?&@2o(-E%BSF+33mi*^p zF=ER0mJB+kq4es*p}!Xj7e~a2PQP1Yz!tgs|7x3y*^SKYuWXxM%vYuRRd>=xeu9M*ruSi|U9Au`?Jzrby(muv_t$SPl1TnmS u*0gq;cZSxEtNL#?EdC^LgR%ENmjS~IFMEZ95_+Hlo59o7&t;ucLK6Uml_whj diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_cap__22.png b/src/main/resources/assets/betterend/textures/block/capsacis_cap__22.png deleted file mode 100644 index a54a1a07203ad5ae61b55e39bd2c8d0fea113abe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2233 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 aqt7g#+cvMQ{WtxumX}lD*fn**qQ3yAHji%r diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_log_top.png b/src/main/resources/assets/betterend/textures/block/capsacis_log_top.png deleted file mode 100644 index b45ac0367e736724e08e11a1a177fcd93c40f984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1741 zcmbVNe{2&~9KUU4VUsx=KV0S?9>*L%;@bc)g2-D`WU_oH_= z+6@ejA8{jD#A#H@B$|ngU;YR|L8D-12w5TvK>`5@x=4UIQGx~&3Hq*U8zlIPOWwWr z?tR|p`}=#nElmw2#TCT}f|U5YOaRW)jWIPJzPG#_wZo}M@wRFRa^DPN&lN3$bX{!^>JQ$Rw@?ko_EX&A(I~Nw! zb%iE~L?U5MSk1B;At_O5-lNQ=WJxW?>lAMJ4 zWnKt(-T|!%S}59LyAukthG%v5U%@;_hh|kS%re3cGk2O zen0J#G@X?=;A31EG}|l)JPoWYXQQ0exSix!++nlX@ftqtz{71$k_uDKHb>Z&z0b&8 zhY{TDeg1#mZ&n3ZTx{%~d5n@XvV!&s8jM$GrYKf`cxDw7&~zfuEN3LR3*(H)0v^kJ z7Vg;tleCE_fTaHr?n#&?hxG)j0(S&@>%U|a0re-0YMeBMxYNq?*=?1Zg~N7WEOUJb zZgQOrNU(jWuusi=v6VrPycc|oJ2-!|BOo>nlhgbwYL`1GiYhON7u`~3Up>-#D6hW$ zI6fZz;q;C3Bb!qC5}ICcaM0Q}>}-C0|E~?b zJLBs@9~|JPp12|HR%g8wDBS~&&s;06Iludxu|o6qs#DAp<7Zd3Tp9au>|#l(q~WWH z&)$E2-;>>W4<7yY7t>=uza6MrGVt_v&zehb)sEB;HZ@-OWZT7xW^;6WEB0H7I$Zku zUf=hH7g}c9Q}4J>jGoH>oSFEj);(*_0qLx%Sps+_)XhpgwvdW*VE z1situ{qgQ2@&2ZtYN_fxpU`EcVOq?%yf6# z7!yH!Bp4L@p@fGLq6r3yK|>5CCN*LVs3h>i_^3Y+{6V4^G(-*PoqY_&w6uzBc6J_n z?)lDl&Uen-7rQzin$~nr6G0HuI@(hie4ZH`lg8oSmtVgRK>51uY<=7MOIAwO$xOv03>ti zE;4Dmh>S)g8ge2}#u5=uViUahAjz{_jA3I8C(tY>vyv<%$l8a(Xs)Kqnbe9J7QR!c zyze_Q!<0&;NJ)s;Za2dv5($Ro8J?%H1?}}(J}A?cH^1&7g*@mQj&Il&8F&P$-Qz11 zjWb>ue0&|47#4rF)YXC zmBo&nbP@1vH*4F4dX>BCe92@osA`;Cw8pSByX4&;0M^!^6!4Kk@hs2MY>ejlEEkpW zSByTu3Np)9P1Ck!=)IvShowPtQkE65h0IAem}1Fkzz3rmYf#p0*916Wh6%b6<5=Ak z8J0m#+6CLiz&JXg5=A;KcUYbeEQmT%3WX^|3`3K7U4)_}a5Mm%h6#vq8t@vR1rG8O z%W}M`Y4!Cf8}X9tBqCkRWL^WFbdKqoPU!K?SrbLBOlL8dVc&&%&aj>jcp-r6aX0 zyXZ?ZbFyimb*lgF<82qu?QfhoarOk|_rF@sPnq}9=A(P~=Qd6Um%l!>VDdYkUo-oQ zr_{a2cIVb!>pT4R%GQRdXIsCwugqDs>&?9#zn*z&aPDdF!MA^~gQxo!Z{P9QstX6E zpZRRy;VsRVbH7D@SSYN#yL|4x8FMGkIRbK1Jyjf;r`sXZG{ z4HQe4y!^I(%Uf2wD!-6~GhBD2`_}Z=&@JCC7yHO(`V)My-_?0;&dp__3WF6EQ?YZwEi0hoa7WKG5O4;^g?>w~bmVrIglG^_oII+X*{a$ptn0C#g4)AYQ2b zT4B`QJTZi3;iPQ+{unBxl*X>6%-L{BEoIyV|-+MM)&^u+7K_KkWjOh5I|0ueR~bxjclUUicb1g_8MdKKJ ze3IC|-P-!`Ag7E@da=t;kTYg_Ng~BKUf_97ppEl%yHRp(1mZpOdLMVuEu7Jx_q;Bb ar~U`F;n<`AqmZ}&0000e;|l<(WnM*4RiZ|_ z5H+Hz0Q4`|N1q?S2ZyttN?Wr&Ey!MVzk z8Q06zWB^9H?OKb21ibgSahymuZMmurO53#r2?Pmtam@t4`XVBh%tl6yW@2WumT+(E z17!MnE%#>PBV-9BgVJQ@Dngz@RkgOkY@`l~)Uq&mZFop2Ena}T+ogGHS(#bLRb%09 zIXESxu5HKw#&KGDa6X=Fg#Uss831g$h7Ao#<2)ocCcwiF<-Moscl#*^*^mF=7g~>{ UXX639=l}o!07*qoM6N<$f~l&gApigX