From 113aab6d24d70e3f8d4a9be145d636cdb49b6cbf Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Wed, 23 Dec 2020 13:10:11 +0300 Subject: [PATCH] Sponge drop fix --- .../blocks/BlockMengerSpongeWet.java | 2 +- .../blocks/complex/StoneMaterial.java | 2 ++ .../blocks/complex/WoodenMaterial.java | 2 ++ .../ru/betterend/recipe/CraftingRecipes.java | 13 +++++++++++ .../ru/betterend/registry/EndFeatures.java | 2 +- .../java/ru/betterend/registry/EndTags.java | 23 +++++++++++++++---- .../features/trees/UmbrellaTreeFeature.java | 15 ++++++------ 7 files changed, 46 insertions(+), 13 deletions(-) diff --git a/src/main/java/ru/betterend/blocks/BlockMengerSpongeWet.java b/src/main/java/ru/betterend/blocks/BlockMengerSpongeWet.java index 9f81c688..c9e32571 100644 --- a/src/main/java/ru/betterend/blocks/BlockMengerSpongeWet.java +++ b/src/main/java/ru/betterend/blocks/BlockMengerSpongeWet.java @@ -81,7 +81,7 @@ public class BlockMengerSpongeWet extends BlockBaseNotFull implements IRenderTyp @Override public void onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) { - super.onBreak(world, pos, state, player); + world.breakBlock(pos, !player.isCreative()); BlocksHelper.setWithUpdate(world, pos, Blocks.AIR); } diff --git a/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java b/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java index 77382814..b3d05665 100644 --- a/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java @@ -19,6 +19,7 @@ import ru.betterend.recipe.CraftingRecipes; import ru.betterend.recipe.builders.GridRecipe; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; +import ru.betterend.registry.EndTags; import ru.betterend.util.TagHelper; public class StoneMaterial { @@ -91,5 +92,6 @@ public class StoneMaterial { TagHelper.addTag(BlockTags.WALLS, wall, brick_wall); TagHelper.addTag(BlockTags.SLABS, slab, brick_slab); TagHelper.addTags(pressure_plate, BlockTags.PRESSURE_PLATES, BlockTags.STONE_PRESSURE_PLATES); + TagHelper.addTag(EndTags.END_STONES, stone); } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/blocks/complex/WoodenMaterial.java b/src/main/java/ru/betterend/blocks/complex/WoodenMaterial.java index 3d9e8a8c..520b6b1b 100644 --- a/src/main/java/ru/betterend/blocks/complex/WoodenMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/WoodenMaterial.java @@ -125,6 +125,7 @@ public class WoodenMaterial { TagHelper.addTags(slab, ItemTags.WOODEN_SLABS, ItemTags.SLABS); TagHelper.addTags(stairs, ItemTags.WOODEN_STAIRS, ItemTags.STAIRS); TagHelper.addTags(trapdoor, ItemTags.WOODEN_TRAPDOORS, ItemTags.TRAPDOORS); + TagHelper.addTag(EndTags.ITEM_CHEST, chest); // Block Tags // TagHelper.addTag(BlockTags.PLANKS, planks); @@ -139,6 +140,7 @@ public class WoodenMaterial { TagHelper.addTags(stairs, BlockTags.WOODEN_STAIRS, BlockTags.STAIRS); TagHelper.addTags(trapdoor, BlockTags.WOODEN_TRAPDOORS, BlockTags.TRAPDOORS); TagHelper.addTag(EndTags.BOOKSHELVES, shelf); + TagHelper.addTag(EndTags.BLOCK_CHEST, chest); logBlockTag = EndTags.makeBlockTag(name + "_logs"); logItemTag = EndTags.makeItemTag(name + "_logs"); diff --git a/src/main/java/ru/betterend/recipe/CraftingRecipes.java b/src/main/java/ru/betterend/recipe/CraftingRecipes.java index 72e37c7d..b947949d 100644 --- a/src/main/java/ru/betterend/recipe/CraftingRecipes.java +++ b/src/main/java/ru/betterend/recipe/CraftingRecipes.java @@ -12,6 +12,7 @@ import ru.betterend.item.GuideBook; import ru.betterend.recipe.builders.GridRecipe; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; +import ru.betterend.registry.EndTags; public class CraftingRecipes { @@ -166,6 +167,18 @@ public class CraftingRecipes { .addMaterial('S', EndItems.ETERNAL_CRYSTAL) .addMaterial('A', EndBlocks.AMBER_BLOCK) .build(); + + GridRecipe.make("hopper", Blocks.HOPPER) + .setShape("I I", "ICI", " I ") + .addMaterial('I', Items.IRON_INGOT) + .addMaterial('C', EndTags.ITEM_CHEST) + .build();; + + GridRecipe.make("shulker_box", Blocks.SHULKER_BOX) + .setShape("S", "C", "S") + .addMaterial('S', Items.SHULKER_SHELL) + .addMaterial('C', EndTags.ITEM_CHEST) + .build(); } private static void registerLantern(String name, Block lantern, Block slab) { diff --git a/src/main/java/ru/betterend/registry/EndFeatures.java b/src/main/java/ru/betterend/registry/EndFeatures.java index bf0fdfd2..f78e3fd9 100644 --- a/src/main/java/ru/betterend/registry/EndFeatures.java +++ b/src/main/java/ru/betterend/registry/EndFeatures.java @@ -56,7 +56,7 @@ public class EndFeatures { public static final EndFeature DRAGON_TREE = new EndFeature("dragon_tree", new DragonTreeFeature(), 3); public static final EndFeature TENANEA = new EndFeature("tenanea", new TenaneaFeature(), 3); 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(), 2); + public static final EndFeature UMBRELLA_TREE = new EndFeature("umbrella_tree", new UmbrellaTreeFeature(), 4); // 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/registry/EndTags.java b/src/main/java/ru/betterend/registry/EndTags.java index 0e954611..0a3e3d00 100644 --- a/src/main/java/ru/betterend/registry/EndTags.java +++ b/src/main/java/ru/betterend/registry/EndTags.java @@ -31,12 +31,15 @@ import ru.betterend.util.TagHelper; public class EndTags { // Block Tags - public static final Tag.Identified END_GROUND = makeBlockTag("end_ground"); + public static final Tag.Identified BOOKSHELVES = makeCommonBlockTag("bookshelves"); public static final Tag.Identified GEN_TERRAIN = makeBlockTag("gen_terrain"); - public static final Tag.Identified BOOKSHELVES = makeCommonTag("bookshelves"); + public static final Tag.Identified END_GROUND = makeBlockTag("end_ground"); public static final Tag.Identified PEDESTALS = makeBlockTag("pedestal"); + public static final Tag.Identified BLOCK_CHEST = makeCommonBlockTag("chest"); + public static final Tag.Identified END_STONES = makeCommonBlockTag("end_stones"); // Item Tags + public static final Tag.Identified ITEM_CHEST = makeCommonItemTag("chest"); public final static Tag HAMMERS = registerFabricItemTag("hammers"); public static Tag.Identified makeBlockTag(String name) { @@ -51,12 +54,18 @@ public class EndTags { return tag == null ? (Identified) TagRegistry.item(id) : (Identified) tag; } - public static Tag.Identified makeCommonTag(String name) { + public static Tag.Identified makeCommonBlockTag(String name) { Identifier id = new Identifier("c", name); Tag tag = BlockTags.getTagGroup().getTag(id); return tag == null ? (Identified) TagRegistry.block(id) : (Identified) tag; } + public static Tag.Identified makeCommonItemTag(String name) { + Identifier id = new Identifier("c", name); + Tag tag = ItemTags.getTagGroup().getTag(id); + return tag == null ? (Identified) TagRegistry.item(id) : (Identified) tag; + } + public static void register() { addSurfaceBlock(Blocks.END_STONE); addSurfaceBlock(EndBlocks.ENDSTONE_DUST); @@ -106,9 +115,15 @@ public class EndTags { biomeRegistry.forEach((biome) -> { if (biome.getCategory() == Category.THEEND) { SurfaceConfig config = biome.getGenerationSettings().getSurfaceConfig(); - TagHelper.addTag(GEN_TERRAIN, config.getTopMaterial().getBlock(), config.getUnderMaterial().getBlock()); + Block under = config.getUnderMaterial().getBlock(); + Block surface = config.getTopMaterial().getBlock(); + TagHelper.addTag(GEN_TERRAIN, under, surface); + TagHelper.addTag(END_GROUND, surface); } }); + END_STONES.values().forEach((block) -> { + addSurfaceBlock(block); + }); } public static boolean validGenBlock(BlockState block) { diff --git a/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java b/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java index 86b28b28..f50e3a78 100644 --- a/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/UmbrellaTreeFeature.java @@ -10,7 +10,6 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Material; import net.minecraft.client.util.math.Vector3f; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.DefaultFeatureConfig; @@ -31,6 +30,7 @@ import ru.betterend.world.features.DefaultFeature; public class UmbrellaTreeFeature extends DefaultFeature { private static final Function REPLACE; + private static final Function IGNORE; private static final Function POST; private static final List SPLINE; private static final List ROOT; @@ -48,9 +48,6 @@ public class UmbrellaTreeFeature extends DefaultFeature { float var = MHelper.PI2 / (float) (count * 3); float start = MHelper.randRange(0, MHelper.PI2, random); SDF sdf = null; - int x1 = ((pos.getX() >> 4) << 4) - 16; - int z1 = ((pos.getZ() >> 4) << 4) - 16; - Box limits = new Box(x1, pos.getY() - 5, z1, x1 + 47, pos.getY() + size * 2, z1 + 47); for (int i = 0; i < count; i++) { float angle = (float) i / (float) count * MHelper.PI2 + MHelper.randRange(0, var, random) + start; List spline = SplineHelper.copySpline(SPLINE); @@ -61,7 +58,7 @@ public class UmbrellaTreeFeature extends DefaultFeature { SplineHelper.offsetParts(spline, random, 0.5F, 0, 0.5F); if (SplineHelper.canGenerate(spline, pos, world, REPLACE)) { - SDF branch = SplineHelper.buildSDF(spline, 1.3F, 0.8F, (bpos) -> { + SDF branch = SplineHelper.buildSDF(spline, 1.2F, 0.8F, (bpos) -> { return wood; }); @@ -83,8 +80,8 @@ public class UmbrellaTreeFeature extends DefaultFeature { return false; } - makeRoots(world, pos.add(0, 3, 0), size * 0.4F + 5, random, wood); - sdf.setReplaceFunction(REPLACE).setPostProcess(POST).fillArea(world, pos, limits); + sdf.setReplaceFunction(REPLACE).setPostProcess(POST).fillRecursiveIgnore(world, pos, IGNORE); + makeRoots(world, pos.add(0, 2, 0), size * 0.3F + 3, random, wood); return true; } @@ -150,6 +147,10 @@ public class UmbrellaTreeFeature extends DefaultFeature { return state.getMaterial().isReplaceable(); }; + IGNORE = (state) -> { + return EndBlocks.UMBRELLA_TREE.isTreeLog(state); + }; + POST = (info) -> { if (EndBlocks.UMBRELLA_TREE.isTreeLog(info.getStateUp()) && EndBlocks.UMBRELLA_TREE.isTreeLog(info.getStateDown())) { return EndBlocks.UMBRELLA_TREE.log.getDefaultState();