From 3668a4694a048951cf9eb7525402fb4ee675ed3f Mon Sep 17 00:00:00 2001 From: Aleksey Date: Fri, 11 Jun 2021 15:47:04 +0300 Subject: [PATCH] Migrating to BCLib (WIP) --- gradle.properties | 2 +- .../ru/betterend/blocks/AeterniumAnvil.java | 10 + .../ru/betterend/blocks/AeterniumBlock.java | 4 +- .../betterend/blocks/AmaranitaCapBlock.java | 4 +- .../blocks/AmaranitaHymenophoreBlock.java | 4 +- .../betterend/blocks/AmaranitaStemBlock.java | 4 +- .../java/ru/betterend/blocks/AmberBlock.java | 4 +- .../blocks/AncientEmeraldIceBlock.java | 12 +- .../ru/betterend/blocks/BlueVineBlock.java | 6 +- .../blocks/BlueVineLanternBlock.java | 5 +- .../betterend/blocks/BlueVineSeedBlock.java | 12 +- .../betterend/blocks/BoluxMushroomBlock.java | 7 +- .../ru/betterend/blocks/BrimstoneBlock.java | 12 +- .../ru/betterend/blocks/BubbleCoralBlock.java | 9 +- .../ru/betterend/blocks/BulbVineBlock.java | 11 +- .../betterend/blocks/BulbVineSeedBlock.java | 8 +- .../ru/betterend/blocks/CavePumpkinBlock.java | 14 +- .../blocks/CavePumpkinVineBlock.java | 7 +- .../ru/betterend/blocks/ChandelierBlock.java | 16 +- .../ru/betterend/blocks/CharcoalBlock.java | 4 +- .../ru/betterend/blocks/CharniaBlock.java | 5 +- .../blocks/DenseEmeraldIceBlock.java | 10 +- .../ru/betterend/blocks/DenseSnowBlock.java | 4 +- .../blocks/DragonTreeSaplingBlock.java | 2 +- ...roperties.java => EndBlockProperties.java} | 73 +----- .../ru/betterend/blocks/EndLilyBlock.java | 16 +- .../ru/betterend/blocks/EndLilySeedBlock.java | 15 +- .../betterend/blocks/EndLotusFlowerBlock.java | 5 +- .../betterend/blocks/EndLotusLeafBlock.java | 8 +- .../betterend/blocks/EndLotusSeedBlock.java | 14 +- .../betterend/blocks/EndLotusStemBlock.java | 23 +- .../ru/betterend/blocks/EndPortalBlock.java | 2 +- .../ru/betterend/blocks/EndStoneBlock.java | 13 - .../ru/betterend/blocks/EndStoneSmelter.java | 23 +- .../java/ru/betterend/blocks/EnderBlock.java | 4 +- .../ru/betterend/blocks/EternalPedestal.java | 6 +- .../ru/betterend/blocks/FilaluxBlock.java | 4 +- .../betterend/blocks/FilaluxLanternBlock.java | 4 +- .../betterend/blocks/FilaluxWingsBlock.java | 9 +- .../blocks/GlowingHymenophoreBlock.java | 4 +- .../blocks/GlowingPillarLuminophorBlock.java | 6 +- .../blocks/GlowingPillarRootsBlock.java | 5 +- .../blocks/GlowingPillarSeedBlock.java | 14 +- .../blocks/HelixTreeLeavesBlock.java | 13 +- .../blocks/HelixTreeSaplingBlock.java | 2 +- .../ru/betterend/blocks/HydraluxBlock.java | 24 +- .../betterend/blocks/HydraluxPetalBlock.java | 4 +- .../blocks/HydraluxSaplingBlock.java | 17 +- .../blocks/HydrothermalVentBlock.java | 22 +- .../betterend/blocks/JellyshroomCapBlock.java | 2 +- .../blocks/LacugroveSaplingBlock.java | 2 +- .../ru/betterend/blocks/LanceleafBlock.java | 12 +- .../betterend/blocks/LanceleafSeedBlock.java | 3 +- .../betterend/blocks/LargeAmaranitaBlock.java | 3 +- .../blocks/LucerniaSaplingBlock.java | 2 +- .../ru/betterend/blocks/LumecornBlock.java | 13 +- .../betterend/blocks/LumecornSeedBlock.java | 5 +- .../betterend/blocks/MengerSpongeBlock.java | 33 +-- .../blocks/MengerSpongeWetBlock.java | 17 +- .../ru/betterend/blocks/MissingTileBlock.java | 4 +- .../blocks/MossyDragonBoneBlock.java | 13 +- .../blocks/MossyGlowshroomCapBlock.java | 6 +- .../blocks/MossyGlowshroomSaplingBlock.java | 3 +- .../ru/betterend/blocks/MossyObsidian.java | 12 +- .../ru/betterend/blocks/NeonCactusBlock.java | 4 +- .../blocks/NeonCactusPlantBlock.java | 37 ++- .../ru/betterend/blocks/PondAnemoneBlock.java | 8 +- .../blocks/PythadendronSaplingBlock.java | 2 +- .../betterend/blocks/RespawnObeliskBlock.java | 15 +- .../ru/betterend/blocks/RunedFlavolite.java | 10 +- .../ru/betterend/blocks/ShadowBerryBlock.java | 4 +- .../betterend/blocks/SilkMothHiveBlock.java | 10 +- .../betterend/blocks/SilkMothNestBlock.java | 22 +- .../blocks/SmallJellyshroomBlock.java | 14 +- .../blocks/SmaragdantCrystalBlock.java | 4 +- .../blocks/SmaragdantCrystalShardBlock.java | 18 +- .../betterend/blocks/SulphurCrystalBlock.java | 22 +- .../betterend/blocks/TenaneaFlowersBlock.java | 12 +- .../betterend/blocks/TenaneaSaplingBlock.java | 2 +- .../ru/betterend/blocks/TerminiteBlock.java | 4 +- .../blocks/TwistedUmbrellaMossBlock.java | 10 +- .../blocks/TwistedUmbrellaMossTallBlock.java | 8 +- .../betterend/blocks/UmbrellaMossBlock.java | 10 +- .../blocks/UmbrellaMossTallBlock.java | 8 +- .../blocks/UmbrellaTreeClusterBlock.java | 5 +- .../blocks/UmbrellaTreeClusterEmptyBlock.java | 10 +- .../blocks/UmbrellaTreeMembraneBlock.java | 2 +- .../blocks/UmbrellaTreeSaplingBlock.java | 4 +- .../betterend/blocks/basis/AttachedBlock.java | 76 ------ .../ru/betterend/blocks/basis/BarkBlock.java | 24 -- .../blocks/basis/BaseBlockWithEntity.java | 27 -- .../ru/betterend/blocks/basis/BlockBase.java | 28 -- .../blocks/basis/BlockBaseNotFull.java | 25 -- .../blocks/basis/DoublePlantBlock.java | 153 ----------- .../betterend/blocks/basis/EndAnvilBlock.java | 66 +++++ .../blocks/basis/EndBarrelBlock.java | 10 - .../blocks/basis/EndBlockStripableLogLog.java | 41 --- .../blocks/basis/EndBookshelfBlock.java | 51 ---- .../blocks/basis/EndButtonBlock.java | 79 ------ .../betterend/blocks/basis/EndChainBlock.java | 62 ----- .../betterend/blocks/basis/EndChestBlock.java | 10 - .../blocks/basis/EndComposterBlock.java | 66 ----- .../blocks/basis/EndCraftingTableBlock.java | 54 ---- .../betterend/blocks/basis/EndCropBlock.java | 122 --------- .../betterend/blocks/basis/EndDoorBlock.java | 163 ------------ .../betterend/blocks/basis/EndFenceBlock.java | 81 ------ .../blocks/basis/EndFurnaceBlock.java | 10 - .../betterend/blocks/basis/EndGateBlock.java | 68 ----- .../blocks/basis/EndLadderBlock.java | 162 ------------ .../blocks/basis/EndLanternBlock.java | 6 +- .../blocks/basis/EndLeavesBlock.java | 79 ------ .../blocks/basis/EndMetalPaneBlock.java | 108 -------- .../betterend/blocks/basis/EndOreBlock.java | 76 ------ .../betterend/blocks/basis/EndPathBlock.java | 11 - .../blocks/basis/EndPillarBlock.java | 58 ----- .../betterend/blocks/basis/EndPlantBlock.java | 116 +-------- .../blocks/basis/EndPlantWithAgeBlock.java | 64 +---- .../betterend/blocks/basis/EndPlateBlock.java | 62 ----- .../betterend/blocks/basis/EndSignBlock.java | 10 - .../betterend/blocks/basis/EndSlabBlock.java | 62 ----- .../blocks/basis/EndStairsBlock.java | 108 -------- .../blocks/basis/EndStoneButtonBlock.java | 18 -- .../blocks/basis/EndStonePlateBlock.java | 9 - .../blocks/basis/EndTrapdoorBlock.java | 87 ------- .../blocks/basis/EndTripleTerrain.java | 12 + .../blocks/basis/EndUnderwaterPlantBlock.java | 23 ++ .../basis/EndUnderwaterWallPlantBlock.java | 56 +--- .../betterend/blocks/basis/EndWallBlock.java | 11 - .../blocks/basis/EndWallMushroom.java | 17 ++ .../blocks/basis/EndWallPlantBlock.java | 122 +-------- .../blocks/basis/EndWeightedPlateBlock.java | 62 ----- .../blocks/basis/EndWoodenButtonBlock.java | 18 -- .../blocks/basis/EndWoodenPlateBlock.java | 9 - .../blocks/basis/FeatureSaplingBlock.java | 123 --------- .../ru/betterend/blocks/basis/FurBlock.java | 3 +- .../betterend/blocks/basis/PedestalBlock.java | 12 +- .../blocks/basis/SimpleLeavesBlock.java | 38 --- .../blocks/basis/StalactiteBlock.java | 246 ------------------ .../blocks/basis/StoneLanternBlock.java | 5 +- .../blocks/basis/StrippableBarkBlock.java | 41 --- .../blocks/basis/TripleTerrainBlock.java | 154 ----------- .../blocks/basis/UnderwaterPlantBlock.java | 145 ----------- .../basis/UnderwaterPlantWithAgeBlock.java | 57 ---- .../blocks/basis/UpDownPlantBlock.java | 95 ------- .../ru/betterend/blocks/basis/VineBlock.java | 147 ----------- .../blocks/basis/WallMushroomBlock.java | 39 --- .../complex/CrystalSubblocksMaterial.java | 26 +- .../blocks/complex/MetalMaterial.java | 43 +-- .../blocks/complex/StoneMaterial.java | 39 ++- .../blocks/complex/WoodenMaterial.java | 61 ++--- .../ru/betterend/entity/SilkMothEntity.java | 6 +- .../betterend/integration/byg/BYGBlocks.java | 4 +- .../betterend/integration/rei/REIPlugin.java | 11 +- .../betterend/interfaces/IColorProvider.java | 1 - .../mixin/common/AnvilBlockMixin.java | 28 -- .../mixin/common/AnvilMenuMixin.java | 2 +- .../betterend/mixin/common/PlayerMixin.java | 5 +- .../java/ru/betterend/registry/EndBlocks.java | 89 +++---- .../java/ru/betterend/registry/EndTags.java | 13 +- .../ru/betterend/rituals/EternalRitual.java | 2 +- .../java/ru/betterend/util/BlockFixer.java | 17 +- .../world/biome/cave/LushAuroraCaveBiome.java | 5 +- .../world/features/CavePumpkinFeature.java | 6 +- .../world/features/DoublePlantFeature.java | 12 +- .../world/features/EndLotusLeafFeature.java | 6 +- .../world/features/FilaluxFeature.java | 9 +- .../world/features/SilkMothNestFeature.java | 11 +- .../SingleInvertedScatterFeature.java | 10 +- .../world/features/SinglePlantFeature.java | 18 +- .../features/UnderwaterPlantFeature.java | 12 +- .../betterend/world/features/VineFeature.java | 14 +- .../world/features/WallPlantFeature.java | 10 +- .../bushes/LargeAmaranitaFeature.java | 8 +- .../world/features/bushes/Lumecorn.java | 2 +- .../features/bushes/TenaneaBushFeature.java | 23 +- .../features/terrain/StalactiteFeature.java | 6 +- .../features/terrain/SulphurHillFeature.java | 3 +- .../terrain/SulphuricCaveFeature.java | 6 +- .../terrain/SulphuricLakeFeature.java | 6 +- .../trees/GiganticAmaranitaFeature.java | 29 +-- .../world/features/trees/LucerniaFeature.java | 18 +- .../world/features/trees/TenaneaFeature.java | 18 +- .../resources/betterend.mixins.common.json | 1 - src/main/resources/fabric.mod.json | 2 +- 184 files changed, 802 insertions(+), 4348 deletions(-) rename src/main/java/ru/betterend/blocks/{BlockProperties.java => EndBlockProperties.java} (53%) delete mode 100644 src/main/java/ru/betterend/blocks/EndStoneBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/AttachedBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/BarkBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/BaseBlockWithEntity.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/BlockBase.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/BlockBaseNotFull.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/DoublePlantBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndBarrelBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndBlockStripableLogLog.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndBookshelfBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndButtonBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndChainBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndChestBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndComposterBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndCraftingTableBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndCropBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndDoorBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndFenceBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndFurnaceBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndGateBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndLadderBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndLeavesBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndMetalPaneBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndOreBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndPathBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndPillarBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndPlateBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndSignBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndSlabBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndStairsBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndStoneButtonBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndStonePlateBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndTrapdoorBlock.java create mode 100644 src/main/java/ru/betterend/blocks/basis/EndTripleTerrain.java create mode 100644 src/main/java/ru/betterend/blocks/basis/EndUnderwaterPlantBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndWallBlock.java create mode 100644 src/main/java/ru/betterend/blocks/basis/EndWallMushroom.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndWeightedPlateBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndWoodenButtonBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/EndWoodenPlateBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/FeatureSaplingBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/SimpleLeavesBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/StalactiteBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/StrippableBarkBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/UnderwaterPlantBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/UnderwaterPlantWithAgeBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/UpDownPlantBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/VineBlock.java delete mode 100644 src/main/java/ru/betterend/blocks/basis/WallMushroomBlock.java delete mode 100644 src/main/java/ru/betterend/mixin/common/AnvilBlockMixin.java diff --git a/gradle.properties b/gradle.properties index ab0e74ed..7d6daece 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,5 +17,5 @@ archives_base_name = better-end patchouli_version = 50-FABRIC fabric_version = 0.32.9+1.16 canvas_version = 1.0.+ -bclib_version = 0.1.26 +bclib_version = 0.1.28 rei_version = 5.8.10 \ No newline at end of file diff --git a/src/main/java/ru/betterend/blocks/AeterniumAnvil.java b/src/main/java/ru/betterend/blocks/AeterniumAnvil.java index 36cd4fc2..d0d2e69a 100644 --- a/src/main/java/ru/betterend/blocks/AeterniumAnvil.java +++ b/src/main/java/ru/betterend/blocks/AeterniumAnvil.java @@ -12,6 +12,7 @@ import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.IntegerProperty; +import ru.bclib.blocks.BlockProperties; import ru.bclib.client.models.ModelsHelper; import ru.betterend.blocks.basis.EndAnvilBlock; import ru.betterend.client.models.Patterns; @@ -30,6 +31,15 @@ public class AeterniumAnvil extends EndAnvilBlock { return DESTRUCTION_LONG; } + @Override + public IntegerProperty getDurability() { + if (durability == null) { + this.maxDamage = 8; + this.durability = IntegerProperty.create("durability", 0, maxDamage); + } + return durability; + } + @Override public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { String name = blockId.getPath(); diff --git a/src/main/java/ru/betterend/blocks/AeterniumBlock.java b/src/main/java/ru/betterend/blocks/AeterniumBlock.java index a8d98b32..d176689d 100644 --- a/src/main/java/ru/betterend/blocks/AeterniumBlock.java +++ b/src/main/java/ru/betterend/blocks/AeterniumBlock.java @@ -9,9 +9,9 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class AeterniumBlock extends BlockBase { +public class AeterniumBlock extends BaseBlock { public AeterniumBlock() { super(FabricBlockSettings.of(Material.METAL, MaterialColor.COLOR_GRAY) diff --git a/src/main/java/ru/betterend/blocks/AmaranitaCapBlock.java b/src/main/java/ru/betterend/blocks/AmaranitaCapBlock.java index 173134db..83ccd506 100644 --- a/src/main/java/ru/betterend/blocks/AmaranitaCapBlock.java +++ b/src/main/java/ru/betterend/blocks/AmaranitaCapBlock.java @@ -4,9 +4,9 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class AmaranitaCapBlock extends BlockBase { +public class AmaranitaCapBlock extends BaseBlock { public AmaranitaCapBlock() { super(FabricBlockSettings.of(Material.WOOD).breakByTool(FabricToolTags.AXES).sound(SoundType.WOOD)); } diff --git a/src/main/java/ru/betterend/blocks/AmaranitaHymenophoreBlock.java b/src/main/java/ru/betterend/blocks/AmaranitaHymenophoreBlock.java index 9aa743c7..887e397f 100644 --- a/src/main/java/ru/betterend/blocks/AmaranitaHymenophoreBlock.java +++ b/src/main/java/ru/betterend/blocks/AmaranitaHymenophoreBlock.java @@ -4,11 +4,11 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -public class AmaranitaHymenophoreBlock extends BlockBase implements IRenderTypeable { +public class AmaranitaHymenophoreBlock extends BaseBlock implements IRenderTypeable { public AmaranitaHymenophoreBlock() { super(FabricBlockSettings.of(Material.WOOD).breakByTool(FabricToolTags.AXES).sound(SoundType.WOOD)); } diff --git a/src/main/java/ru/betterend/blocks/AmaranitaStemBlock.java b/src/main/java/ru/betterend/blocks/AmaranitaStemBlock.java index 2aa563ae..47885625 100644 --- a/src/main/java/ru/betterend/blocks/AmaranitaStemBlock.java +++ b/src/main/java/ru/betterend/blocks/AmaranitaStemBlock.java @@ -3,9 +3,9 @@ package ru.betterend.blocks; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.material.MaterialColor; -import ru.betterend.blocks.basis.EndPillarBlock; +import ru.bclib.blocks.BaseRotatedPillarBlock; -public class AmaranitaStemBlock extends EndPillarBlock { +public class AmaranitaStemBlock extends BaseRotatedPillarBlock { public AmaranitaStemBlock() { super(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS).materialColor(MaterialColor.COLOR_LIGHT_GREEN)); } diff --git a/src/main/java/ru/betterend/blocks/AmberBlock.java b/src/main/java/ru/betterend/blocks/AmberBlock.java index 6dbef462..feedaea8 100644 --- a/src/main/java/ru/betterend/blocks/AmberBlock.java +++ b/src/main/java/ru/betterend/blocks/AmberBlock.java @@ -3,9 +3,9 @@ package ru.betterend.blocks; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.material.MaterialColor; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class AmberBlock extends BlockBase { +public class AmberBlock extends BaseBlock { public AmberBlock() { super(FabricBlockSettings.copyOf(Blocks.DIAMOND_BLOCK).materialColor(MaterialColor.COLOR_YELLOW)); } diff --git a/src/main/java/ru/betterend/blocks/AncientEmeraldIceBlock.java b/src/main/java/ru/betterend/blocks/AncientEmeraldIceBlock.java index 9581b061..243f7634 100644 --- a/src/main/java/ru/betterend/blocks/AncientEmeraldIceBlock.java +++ b/src/main/java/ru/betterend/blocks/AncientEmeraldIceBlock.java @@ -1,9 +1,5 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; -import java.util.Random; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -15,13 +11,17 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import ru.bclib.blocks.BaseBlock; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.basis.BlockBase; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndParticles; -public class AncientEmeraldIceBlock extends BlockBase { +import java.util.Collections; +import java.util.List; +import java.util.Random; + +public class AncientEmeraldIceBlock extends BaseBlock { public AncientEmeraldIceBlock() { super(FabricBlockSettings.copyOf(Blocks.BLUE_ICE).randomTicks()); } diff --git a/src/main/java/ru/betterend/blocks/BlueVineBlock.java b/src/main/java/ru/betterend/blocks/BlueVineBlock.java index 9187d92b..ffe9f734 100644 --- a/src/main/java/ru/betterend/blocks/BlueVineBlock.java +++ b/src/main/java/ru/betterend/blocks/BlueVineBlock.java @@ -4,12 +4,12 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.UpDownPlantBlock; +import ru.bclib.blocks.UpDownPlantBlock; +import ru.bclib.blocks.BlockProperties; import ru.betterend.registry.EndBlocks; public class BlueVineBlock extends UpDownPlantBlock { - public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; + public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; @Override protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { diff --git a/src/main/java/ru/betterend/blocks/BlueVineLanternBlock.java b/src/main/java/ru/betterend/blocks/BlueVineLanternBlock.java index ac6671dd..bec0c00e 100644 --- a/src/main/java/ru/betterend/blocks/BlueVineLanternBlock.java +++ b/src/main/java/ru/betterend/blocks/BlueVineLanternBlock.java @@ -13,10 +13,11 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; +import ru.bclib.blocks.BlockProperties; import ru.betterend.registry.EndBlocks; -public class BlueVineLanternBlock extends BlockBase { +public class BlueVineLanternBlock extends BaseBlock { public static final BooleanProperty NATURAL = BlockProperties.NATURAL; public BlueVineLanternBlock() { diff --git a/src/main/java/ru/betterend/blocks/BlueVineSeedBlock.java b/src/main/java/ru/betterend/blocks/BlueVineSeedBlock.java index 9a486149..593f7261 100644 --- a/src/main/java/ru/betterend/blocks/BlueVineSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/BlueVineSeedBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.WorldGenLevel; @@ -9,11 +7,13 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.bclib.blocks.BlockProperties; import ru.betterend.blocks.basis.EndPlantWithAgeBlock; import ru.betterend.blocks.basis.FurBlock; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class BlueVineSeedBlock extends EndPlantWithAgeBlock { @Override public void growAdult(WorldGenLevel world, Random random, BlockPos pos) { @@ -22,11 +22,11 @@ public class BlueVineSeedBlock extends EndPlantWithAgeBlock { if (h < height + 1) { return; } - BlocksHelper.setWithoutUpdate(world, pos, EndBlocks.BLUE_VINE.defaultBlockState().setValue(BlockProperties.TRIPLE_SHAPE, TripleShape.BOTTOM)); + BlocksHelper.setWithoutUpdate(world, pos, EndBlocks.BLUE_VINE.defaultBlockState().setValue(BlockProperties.TRIPLE_SHAPE, BlockProperties.TripleShape.BOTTOM)); for (int i = 1; i < height; i++) { - BlocksHelper.setWithoutUpdate(world, pos.above(i), EndBlocks.BLUE_VINE.defaultBlockState().setValue(BlockProperties.TRIPLE_SHAPE, TripleShape.MIDDLE)); + BlocksHelper.setWithoutUpdate(world, pos.above(i), EndBlocks.BLUE_VINE.defaultBlockState().setValue(BlockProperties.TRIPLE_SHAPE, BlockProperties.TripleShape.MIDDLE)); } - BlocksHelper.setWithoutUpdate(world, pos.above(height), EndBlocks.BLUE_VINE.defaultBlockState().setValue(BlockProperties.TRIPLE_SHAPE, TripleShape.TOP)); + BlocksHelper.setWithoutUpdate(world, pos.above(height), EndBlocks.BLUE_VINE.defaultBlockState().setValue(BlockProperties.TRIPLE_SHAPE, BlockProperties.TripleShape.TOP)); placeLantern(world, pos.above(height + 1)); } diff --git a/src/main/java/ru/betterend/blocks/BoluxMushroomBlock.java b/src/main/java/ru/betterend/blocks/BoluxMushroomBlock.java index a7c95243..88bb3a62 100644 --- a/src/main/java/ru/betterend/blocks/BoluxMushroomBlock.java +++ b/src/main/java/ru/betterend/blocks/BoluxMushroomBlock.java @@ -1,10 +1,6 @@ package ru.betterend.blocks; -import java.util.List; -import java.util.Random; - import com.google.common.collect.Lists; - import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; @@ -18,6 +14,9 @@ import net.minecraft.world.phys.shapes.VoxelShape; import ru.betterend.blocks.basis.EndPlantBlock; import ru.betterend.registry.EndBlocks; +import java.util.List; +import java.util.Random; + public class BoluxMushroomBlock extends EndPlantBlock { private static final VoxelShape SHAPE = Block.box(1, 0, 1, 15, 9, 15); diff --git a/src/main/java/ru/betterend/blocks/BrimstoneBlock.java b/src/main/java/ru/betterend/blocks/BrimstoneBlock.java index 609b1702..0363eba1 100644 --- a/src/main/java/ru/betterend/blocks/BrimstoneBlock.java +++ b/src/main/java/ru/betterend/blocks/BrimstoneBlock.java @@ -1,9 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - -import org.jetbrains.annotations.Nullable; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; @@ -20,11 +16,15 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.MaterialColor; +import org.jetbrains.annotations.Nullable; +import ru.bclib.blocks.BaseBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BlockProperties; import ru.betterend.registry.EndBlocks; -public class BrimstoneBlock extends BlockBase { +import java.util.Random; + +public class BrimstoneBlock extends BaseBlock { public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVE; public BrimstoneBlock() { diff --git a/src/main/java/ru/betterend/blocks/BubbleCoralBlock.java b/src/main/java/ru/betterend/blocks/BubbleCoralBlock.java index 6ffc1849..6963455a 100644 --- a/src/main/java/ru/betterend/blocks/BubbleCoralBlock.java +++ b/src/main/java/ru/betterend/blocks/BubbleCoralBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -17,9 +15,12 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.blocks.basis.UnderwaterPlantBlock; +import ru.betterend.blocks.basis.EndUnderwaterPlantBlock; + +import java.util.Random; + +public class BubbleCoralBlock extends EndUnderwaterPlantBlock { -public class BubbleCoralBlock extends UnderwaterPlantBlock { private static final VoxelShape SHAPE = Block.box(0, 0, 0, 16, 14, 16); public BubbleCoralBlock() { diff --git a/src/main/java/ru/betterend/blocks/BulbVineBlock.java b/src/main/java/ru/betterend/blocks/BulbVineBlock.java index 4b30a6df..153690f0 100644 --- a/src/main/java/ru/betterend/blocks/BulbVineBlock.java +++ b/src/main/java/ru/betterend/blocks/BulbVineBlock.java @@ -1,22 +1,21 @@ package ru.betterend.blocks; -import java.util.List; - import com.google.common.collect.Lists; - import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import ru.bclib.blocks.BlockProperties.TripleShape; +import ru.bclib.blocks.BaseVineBlock; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.VineBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; -public class BulbVineBlock extends VineBlock { +import java.util.List; + +public class BulbVineBlock extends BaseVineBlock { public BulbVineBlock() { super(15, true); } diff --git a/src/main/java/ru/betterend/blocks/BulbVineSeedBlock.java b/src/main/java/ru/betterend/blocks/BulbVineSeedBlock.java index a2dfda71..bc721f91 100644 --- a/src/main/java/ru/betterend/blocks/BulbVineSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/BulbVineSeedBlock.java @@ -1,19 +1,21 @@ package ru.betterend.blocks; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.bclib.blocks.BlockProperties; import ru.betterend.blocks.basis.EndPlantWithAgeBlock; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class BulbVineSeedBlock extends EndPlantWithAgeBlock { + @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { BlockState up = world.getBlockState(pos.above()); diff --git a/src/main/java/ru/betterend/blocks/CavePumpkinBlock.java b/src/main/java/ru/betterend/blocks/CavePumpkinBlock.java index 01565041..fc7ea45c 100644 --- a/src/main/java/ru/betterend/blocks/CavePumpkinBlock.java +++ b/src/main/java/ru/betterend/blocks/CavePumpkinBlock.java @@ -1,8 +1,5 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemStack; @@ -16,12 +13,16 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.blocks.basis.BlockBaseNotFull; +import ru.bclib.blocks.BaseBlockNotFull; +import ru.bclib.blocks.BlockProperties; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.registry.EndBlocks; -public class CavePumpkinBlock extends BlockBaseNotFull implements IRenderTypeable { +import java.util.Collections; +import java.util.List; + +public class CavePumpkinBlock extends BaseBlockNotFull implements IRenderTypeable { public static final BooleanProperty SMALL = BlockProperties.SMALL; private static final VoxelShape SHAPE_SMALL; private static final VoxelShape SHAPE_BIG; @@ -40,8 +41,9 @@ public class CavePumpkinBlock extends BlockBaseNotFull implements IRenderTypeabl public ERenderLayer getRenderLayer() { return ERenderLayer.CUTOUT; } - + @Override + @SuppressWarnings("deprecation") public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { return state.getValue(SMALL) ? SHAPE_SMALL : SHAPE_BIG; } diff --git a/src/main/java/ru/betterend/blocks/CavePumpkinVineBlock.java b/src/main/java/ru/betterend/blocks/CavePumpkinVineBlock.java index c0898eb8..b186f424 100644 --- a/src/main/java/ru/betterend/blocks/CavePumpkinVineBlock.java +++ b/src/main/java/ru/betterend/blocks/CavePumpkinVineBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -14,9 +12,12 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.blocks.BlockProperties; import ru.betterend.blocks.basis.EndPlantWithAgeBlock; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class CavePumpkinVineBlock extends EndPlantWithAgeBlock { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 16, 12); @@ -57,7 +58,7 @@ public class CavePumpkinVineBlock extends EndPlantWithAgeBlock { } return state; } - + @Override public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { return SHAPE; diff --git a/src/main/java/ru/betterend/blocks/ChandelierBlock.java b/src/main/java/ru/betterend/blocks/ChandelierBlock.java index 6ed2e58a..bc825457 100644 --- a/src/main/java/ru/betterend/blocks/ChandelierBlock.java +++ b/src/main/java/ru/betterend/blocks/ChandelierBlock.java @@ -1,13 +1,6 @@ package ru.betterend.blocks; -import java.util.EnumMap; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - import com.google.common.collect.Maps; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; @@ -21,14 +14,19 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.Nullable; +import ru.bclib.blocks.BaseAttachedBlock; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; -import ru.betterend.blocks.basis.AttachedBlock; import ru.betterend.client.models.Patterns; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -public class ChandelierBlock extends AttachedBlock implements IRenderTypeable, BlockModelProvider { +import java.util.EnumMap; +import java.util.Map; +import java.util.Optional; + +public class ChandelierBlock extends BaseAttachedBlock implements IRenderTypeable, BlockModelProvider { private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); public ChandelierBlock(Block source) { diff --git a/src/main/java/ru/betterend/blocks/CharcoalBlock.java b/src/main/java/ru/betterend/blocks/CharcoalBlock.java index f9878f5e..d9fa10a8 100644 --- a/src/main/java/ru/betterend/blocks/CharcoalBlock.java +++ b/src/main/java/ru/betterend/blocks/CharcoalBlock.java @@ -3,9 +3,9 @@ package ru.betterend.blocks; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.registry.FuelRegistry; import net.minecraft.world.level.block.Blocks; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class CharcoalBlock extends BlockBase { +public class CharcoalBlock extends BaseBlock { public CharcoalBlock() { super(FabricBlockSettings.copyOf(Blocks.COAL_BLOCK)); FuelRegistry.INSTANCE.add(this, 16000); diff --git a/src/main/java/ru/betterend/blocks/CharniaBlock.java b/src/main/java/ru/betterend/blocks/CharniaBlock.java index 86d510d6..5a665ab6 100644 --- a/src/main/java/ru/betterend/blocks/CharniaBlock.java +++ b/src/main/java/ru/betterend/blocks/CharniaBlock.java @@ -5,9 +5,10 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluids; -import ru.betterend.blocks.basis.UnderwaterPlantBlock; +import ru.betterend.blocks.basis.EndUnderwaterPlantBlock; + +public class CharniaBlock extends EndUnderwaterPlantBlock { -public class CharniaBlock extends UnderwaterPlantBlock { @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { return canSupportCenter(world, pos.below(), Direction.UP) && world.getFluidState(pos).getType() == Fluids.WATER; diff --git a/src/main/java/ru/betterend/blocks/DenseEmeraldIceBlock.java b/src/main/java/ru/betterend/blocks/DenseEmeraldIceBlock.java index 17d6a839..d566a99e 100644 --- a/src/main/java/ru/betterend/blocks/DenseEmeraldIceBlock.java +++ b/src/main/java/ru/betterend/blocks/DenseEmeraldIceBlock.java @@ -1,8 +1,5 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.EnchantmentHelper; @@ -11,11 +8,14 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -public class DenseEmeraldIceBlock extends BlockBase implements IRenderTypeable { +import java.util.Collections; +import java.util.List; + +public class DenseEmeraldIceBlock extends BaseBlock implements IRenderTypeable { public DenseEmeraldIceBlock() { super(FabricBlockSettings.copyOf(Blocks.PACKED_ICE)); } diff --git a/src/main/java/ru/betterend/blocks/DenseSnowBlock.java b/src/main/java/ru/betterend/blocks/DenseSnowBlock.java index f124f539..1371de16 100644 --- a/src/main/java/ru/betterend/blocks/DenseSnowBlock.java +++ b/src/main/java/ru/betterend/blocks/DenseSnowBlock.java @@ -3,9 +3,9 @@ package ru.betterend.blocks; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class DenseSnowBlock extends BlockBase { +public class DenseSnowBlock extends BaseBlock { public DenseSnowBlock() { super(FabricBlockSettings.of(Material.SNOW).strength(0.2F).sound(SoundType.SNOW)); } diff --git a/src/main/java/ru/betterend/blocks/DragonTreeSaplingBlock.java b/src/main/java/ru/betterend/blocks/DragonTreeSaplingBlock.java index 30494c1f..12310aab 100644 --- a/src/main/java/ru/betterend/blocks/DragonTreeSaplingBlock.java +++ b/src/main/java/ru/betterend/blocks/DragonTreeSaplingBlock.java @@ -4,7 +4,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.Feature; -import ru.betterend.blocks.basis.FeatureSaplingBlock; +import ru.bclib.blocks.FeatureSaplingBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; diff --git a/src/main/java/ru/betterend/blocks/BlockProperties.java b/src/main/java/ru/betterend/blocks/EndBlockProperties.java similarity index 53% rename from src/main/java/ru/betterend/blocks/BlockProperties.java rename to src/main/java/ru/betterend/blocks/EndBlockProperties.java index 12bc9343..8a30036b 100644 --- a/src/main/java/ru/betterend/blocks/BlockProperties.java +++ b/src/main/java/ru/betterend/blocks/EndBlockProperties.java @@ -6,62 +6,15 @@ import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; import ru.betterend.registry.EndPortals; -public class BlockProperties { +public class EndBlockProperties { public static final EnumProperty HYDRALUX_SHAPE = EnumProperty.create("shape", HydraluxShape.class); public static final EnumProperty PEDESTAL_STATE = EnumProperty.create("state", PedestalState.class); public static final EnumProperty CACTUS_BOTTOM = EnumProperty.create("bottom", CactusBottom.class); - public static final EnumProperty TRIPLE_SHAPE = EnumProperty.create("shape", TripleShape.class); - public static final EnumProperty PENTA_SHAPE = EnumProperty.create("shape", PentaShape.class); - public static final BooleanProperty TRANSITION = BooleanProperty.create("transition"); - public static final BooleanProperty HAS_LIGHT = BooleanProperty.create("has_light"); public static final BooleanProperty HAS_ITEM = BooleanProperty.create("has_item"); - public static final BooleanProperty IS_FLOOR = BooleanProperty.create("is_floor"); - public static final BooleanProperty NATURAL = BooleanProperty.create("natural"); - public static final BooleanProperty ACTIVE = BooleanProperty.create("active"); - public static final BooleanProperty SMALL = BooleanProperty.create("small"); - public static final IntegerProperty DESTRUCTION_LONG = IntegerProperty.create("destruction", 0, 8); - public static final IntegerProperty DESTRUCTION = IntegerProperty.create("destruction", 0, 2); - public static final IntegerProperty ROTATION = IntegerProperty.create("rotation", 0, 3); - public static final IntegerProperty FULLNESS = IntegerProperty.create("fullness", 0, 3); - public static final IntegerProperty COLOR = IntegerProperty.create("color", 0, 7); public static final IntegerProperty PORTAL = IntegerProperty.create("portal", 0, EndPortals.getCount()); - public static final IntegerProperty SIZE = IntegerProperty.create("size", 0, 7); - public static final IntegerProperty AGE = IntegerProperty.create("age", 0, 3); - public enum TripleShape implements StringRepresentable { - TOP("top", 0), - MIDDLE("middle", 1), - BOTTOM("bottom", 2); - - private final String name; - private final int index; - - TripleShape(String name, int index) { - this.name = name; - this.index = index; - } - - @Override - public String getSerializedName() { - return name; - } - - @Override - public String toString() { - return name; - } - - public int getIndex() { - return index; - } - - public static TripleShape fromIndex(int index) { - return index > 1 ? BOTTOM : index == 1 ? MIDDLE : TOP; - } - } - public enum PedestalState implements StringRepresentable { PEDESTAL_TOP("pedestal_top"), COLUMN_TOP("column_top"), @@ -118,30 +71,6 @@ public class BlockProperties { } } - public enum PentaShape implements StringRepresentable { - BOTTOM("bottom"), - PRE_BOTTOM("pre_bottom"), - MIDDLE("middle"), - PRE_TOP("pre_top"), - TOP("top"); - - private final String name; - - PentaShape(String name) { - this.name = name; - } - - @Override - public String getSerializedName() { - return name; - } - - @Override - public String toString() { - return name; - } - } - public enum LumecornShape implements StringRepresentable { LIGHT_TOP("light_top", 15), LIGHT_TOP_MIDDLE("light_top_middle", 15), diff --git a/src/main/java/ru/betterend/blocks/EndLilyBlock.java b/src/main/java/ru/betterend/blocks/EndLilyBlock.java index 547a78c6..4a5018dc 100644 --- a/src/main/java/ru/betterend/blocks/EndLilyBlock.java +++ b/src/main/java/ru/betterend/blocks/EndLilyBlock.java @@ -1,11 +1,6 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; -import java.util.Random; - import com.google.common.collect.Lists; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -30,13 +25,18 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.UnderwaterPlantBlock; +import ru.betterend.blocks.basis.EndUnderwaterPlantBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; -public class EndLilyBlock extends UnderwaterPlantBlock { +import java.util.Collections; +import java.util.List; +import java.util.Random; + +public class EndLilyBlock extends EndUnderwaterPlantBlock { public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; private static final VoxelShape SHAPE_BOTTOM = Block.box(4, 0, 4, 12, 16, 12); private static final VoxelShape SHAPE_TOP = Block.box(2, 0, 2, 14, 6, 14); diff --git a/src/main/java/ru/betterend/blocks/EndLilySeedBlock.java b/src/main/java/ru/betterend/blocks/EndLilySeedBlock.java index c5cde2b6..2e20e4d6 100644 --- a/src/main/java/ru/betterend/blocks/EndLilySeedBlock.java +++ b/src/main/java/ru/betterend/blocks/EndLilySeedBlock.java @@ -1,15 +1,17 @@ package ru.betterend.blocks; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluids; +import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BlockProperties.TripleShape; +import ru.bclib.blocks.UnderwaterPlantWithAgeBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.UnderwaterPlantWithAgeBlock; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class EndLilySeedBlock extends UnderwaterPlantWithAgeBlock { @Override public void grow(WorldGenLevel world, Random random, BlockPos pos) { @@ -31,4 +33,9 @@ public class EndLilySeedBlock extends UnderwaterPlantWithAgeBlock { } return world.isEmptyBlock(up); } + + @Override + protected boolean isTerrain(BlockState state) { + return state.is(TagAPI.END_GROUND); + } } diff --git a/src/main/java/ru/betterend/blocks/EndLotusFlowerBlock.java b/src/main/java/ru/betterend/blocks/EndLotusFlowerBlock.java index d79a31ac..dbeefd29 100644 --- a/src/main/java/ru/betterend/blocks/EndLotusFlowerBlock.java +++ b/src/main/java/ru/betterend/blocks/EndLotusFlowerBlock.java @@ -1,9 +1,6 @@ package ru.betterend.blocks; -import java.util.List; - import com.google.common.collect.Lists; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -21,6 +18,8 @@ import ru.bclib.util.MHelper; import ru.betterend.blocks.basis.EndPlantBlock; import ru.betterend.registry.EndBlocks; +import java.util.List; + public class EndLotusFlowerBlock extends EndPlantBlock { private static final VoxelShape SHAPE_OUTLINE = Block.box(2, 0, 2, 14, 14, 14); private static final VoxelShape SHAPE_COLLISION = Block.box(0, 0, 0, 16, 2, 16); diff --git a/src/main/java/ru/betterend/blocks/EndLotusLeafBlock.java b/src/main/java/ru/betterend/blocks/EndLotusLeafBlock.java index aa3690a4..b8f27c1a 100644 --- a/src/main/java/ru/betterend/blocks/EndLotusLeafBlock.java +++ b/src/main/java/ru/betterend/blocks/EndLotusLeafBlock.java @@ -20,14 +20,16 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.WaterFluid; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.blocks.BaseBlockNotFull; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.BlockBaseNotFull; +import ru.bclib.blocks.BlockProperties; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.registry.EndBlocks; -public class EndLotusLeafBlock extends BlockBaseNotFull implements IRenderTypeable { +@SuppressWarnings("deprecation") +public class EndLotusLeafBlock extends BaseBlockNotFull implements IRenderTypeable { public static final EnumProperty HORIZONTAL_FACING = BlockStateProperties.HORIZONTAL_FACING; public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; private static final VoxelShape VSHAPE = Block.box(0, 0, 0, 16, 1, 16); diff --git a/src/main/java/ru/betterend/blocks/EndLotusSeedBlock.java b/src/main/java/ru/betterend/blocks/EndLotusSeedBlock.java index 8610d2be..68e29222 100644 --- a/src/main/java/ru/betterend/blocks/EndLotusSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/EndLotusSeedBlock.java @@ -1,18 +1,19 @@ package ru.betterend.blocks; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Fluids; +import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BlockProperties.TripleShape; +import ru.bclib.blocks.UnderwaterPlantWithAgeBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.UnderwaterPlantWithAgeBlock; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class EndLotusSeedBlock extends UnderwaterPlantWithAgeBlock { @Override public void grow(WorldGenLevel world, Random random, BlockPos pos) { @@ -115,4 +116,9 @@ public class EndLotusSeedBlock extends UnderwaterPlantWithAgeBlock { } return count == 9; } + + @Override + protected boolean isTerrain(BlockState state) { + return state.is(TagAPI.END_GROUND); + } } diff --git a/src/main/java/ru/betterend/blocks/EndLotusStemBlock.java b/src/main/java/ru/betterend/blocks/EndLotusStemBlock.java index b7bfe96e..e2aecd72 100644 --- a/src/main/java/ru/betterend/blocks/EndLotusStemBlock.java +++ b/src/main/java/ru/betterend/blocks/EndLotusStemBlock.java @@ -1,9 +1,6 @@ package ru.betterend.blocks; -import java.util.Map; - import com.google.common.collect.Maps; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -11,11 +8,7 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.SimpleWaterloggedBlock; +import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -25,13 +18,17 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.blocks.BaseBlock; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.BlockBase; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -public class EndLotusStemBlock extends BlockBase implements SimpleWaterloggedBlock, IRenderTypeable { +import java.util.Map; + +@SuppressWarnings("deprecation") +public class EndLotusStemBlock extends BaseBlock implements SimpleWaterloggedBlock, IRenderTypeable { public static final EnumProperty FACING = BlockStateProperties.FACING; public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; public static final BooleanProperty LEAF = BooleanProperty.create("leaf"); @@ -55,7 +52,7 @@ public class EndLotusStemBlock extends BlockBase implements SimpleWaterloggedBlo @Override public FluidState getFluidState(BlockState state) { - return (Boolean) state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); + return state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); } @Override @@ -77,7 +74,7 @@ public class EndLotusStemBlock extends BlockBase implements SimpleWaterloggedBlo @Override public BlockState updateShape(BlockState state, Direction direction, BlockState newState, LevelAccessor world, BlockPos pos, BlockPos posFrom) { - if ((Boolean) state.getValue(WATERLOGGED)) { + if (state.getValue(WATERLOGGED)) { world.getLiquidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); } return state; diff --git a/src/main/java/ru/betterend/blocks/EndPortalBlock.java b/src/main/java/ru/betterend/blocks/EndPortalBlock.java index 96482b57..72c9925b 100644 --- a/src/main/java/ru/betterend/blocks/EndPortalBlock.java +++ b/src/main/java/ru/betterend/blocks/EndPortalBlock.java @@ -41,7 +41,7 @@ import ru.betterend.registry.EndPortals; import ru.betterend.rituals.EternalRitual; public class EndPortalBlock extends NetherPortalBlock implements IRenderTypeable, IColorProvider { - public static final IntegerProperty PORTAL = BlockProperties.PORTAL; + public static final IntegerProperty PORTAL = EndBlockProperties.PORTAL; public EndPortalBlock() { super(FabricBlockSettings.copyOf(Blocks.NETHER_PORTAL).resistance(Blocks.BEDROCK.getExplosionResistance()).luminance(15)); diff --git a/src/main/java/ru/betterend/blocks/EndStoneBlock.java b/src/main/java/ru/betterend/blocks/EndStoneBlock.java deleted file mode 100644 index db65cd45..00000000 --- a/src/main/java/ru/betterend/blocks/EndStoneBlock.java +++ /dev/null @@ -1,13 +0,0 @@ -package ru.betterend.blocks; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.material.MaterialColor; -import ru.betterend.blocks.basis.BlockBase; - -public class EndStoneBlock extends BlockBase { - public EndStoneBlock(MaterialColor color) { - super(FabricBlockSettings.copyOf(Blocks.END_STONE).materialColor(color).sound(SoundType.STONE)); - } -} diff --git a/src/main/java/ru/betterend/blocks/EndStoneSmelter.java b/src/main/java/ru/betterend/blocks/EndStoneSmelter.java index 4e326c72..dc539d9b 100644 --- a/src/main/java/ru/betterend/blocks/EndStoneSmelter.java +++ b/src/main/java/ru/betterend/blocks/EndStoneSmelter.java @@ -1,10 +1,6 @@ package ru.betterend.blocks; -import java.util.List; -import java.util.Random; - import com.google.common.collect.Lists; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -21,12 +17,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.RenderShape; -import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; @@ -38,9 +29,13 @@ import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.BlockHitResult; -import ru.betterend.blocks.basis.BaseBlockWithEntity; +import ru.bclib.blocks.BaseBlockWithEntity; import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; +import java.util.List; +import java.util.Random; + +@SuppressWarnings("deprecation") public class EndStoneSmelter extends BaseBlockWithEntity { public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; public static final BooleanProperty LIT = BlockStateProperties.LIT; @@ -117,12 +112,12 @@ public class EndStoneSmelter extends BaseBlockWithEntity { @Override public BlockState rotate(BlockState state, Rotation rotation) { - return (BlockState)state.setValue(FACING, rotation.rotate((Direction)state.getValue(FACING))); + return state.setValue(FACING, rotation.rotate(state.getValue(FACING))); } @Override public BlockState mirror(BlockState state, Mirror mirror) { - return state.rotate(mirror.getRotation((Direction)state.getValue(FACING))); + return state.rotate(mirror.getRotation(state.getValue(FACING))); } @Override @@ -140,7 +135,7 @@ public class EndStoneSmelter extends BaseBlockWithEntity { world.playLocalSound(x, y, z, SoundEvents.BLASTFURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1.0F, 1.0F, false); } - Direction direction = (Direction)state.getValue(FACING); + Direction direction = state.getValue(FACING); Direction.Axis axis = direction.getAxis(); double defOffset = random.nextDouble() * 0.6D - 0.3D; double offX = axis == Direction.Axis.X ? direction.getStepX() * 0.52D : defOffset; diff --git a/src/main/java/ru/betterend/blocks/EnderBlock.java b/src/main/java/ru/betterend/blocks/EnderBlock.java index bb20eb58..31469430 100644 --- a/src/main/java/ru/betterend/blocks/EnderBlock.java +++ b/src/main/java/ru/betterend/blocks/EnderBlock.java @@ -9,9 +9,9 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class EnderBlock extends BlockBase { +public class EnderBlock extends BaseBlock { public EnderBlock() { super(FabricBlockSettings.of(Material.STONE, MaterialColor.WARPED_WART_BLOCK) diff --git a/src/main/java/ru/betterend/blocks/EternalPedestal.java b/src/main/java/ru/betterend/blocks/EternalPedestal.java index 4261bd22..8bc3d958 100644 --- a/src/main/java/ru/betterend/blocks/EternalPedestal.java +++ b/src/main/java/ru/betterend/blocks/EternalPedestal.java @@ -30,7 +30,7 @@ import ru.betterend.rituals.EternalRitual; @SuppressWarnings("deprecation") public class EternalPedestal extends PedestalBlock { - public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVE; + public static final BooleanProperty ACTIVATED = EndBlockProperties.ACTIVE; public EternalPedestal() { super(EndBlocks.FLAVOLITE_RUNED_ETERNAL); @@ -104,8 +104,8 @@ public class EternalPedestal extends PedestalBlock { @Override public List getDrops(BlockState state, LootContext.Builder builder) { if (state.is(this)) { - BlockProperties.PedestalState currentState = state.getValue(BlockProperties.PEDESTAL_STATE); - if (currentState.equals(BlockProperties.PedestalState.BOTTOM) || currentState.equals(BlockProperties.PedestalState.PILLAR)) { + EndBlockProperties.PedestalState currentState = state.getValue(EndBlockProperties.PEDESTAL_STATE); + if (currentState.equals(EndBlockProperties.PedestalState.BOTTOM) || currentState.equals(EndBlockProperties.PedestalState.PILLAR)) { return Lists.newArrayList(); } } diff --git a/src/main/java/ru/betterend/blocks/FilaluxBlock.java b/src/main/java/ru/betterend/blocks/FilaluxBlock.java index d9c8b473..55d35214 100644 --- a/src/main/java/ru/betterend/blocks/FilaluxBlock.java +++ b/src/main/java/ru/betterend/blocks/FilaluxBlock.java @@ -1,9 +1,9 @@ package ru.betterend.blocks; import net.minecraft.world.level.block.state.BlockBehaviour; -import ru.betterend.blocks.basis.VineBlock; +import ru.bclib.blocks.BaseVineBlock; -public class FilaluxBlock extends VineBlock { +public class FilaluxBlock extends BaseVineBlock { public FilaluxBlock() { super(15, true); } diff --git a/src/main/java/ru/betterend/blocks/FilaluxLanternBlock.java b/src/main/java/ru/betterend/blocks/FilaluxLanternBlock.java index 692ae394..658195b7 100644 --- a/src/main/java/ru/betterend/blocks/FilaluxLanternBlock.java +++ b/src/main/java/ru/betterend/blocks/FilaluxLanternBlock.java @@ -4,9 +4,9 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class FilaluxLanternBlock extends BlockBase { +public class FilaluxLanternBlock extends BaseBlock { public FilaluxLanternBlock() { super(FabricBlockSettings.of(Material.WOOD).breakByTool(FabricToolTags.AXES).luminance(15).sound(SoundType.WOOD)); } diff --git a/src/main/java/ru/betterend/blocks/FilaluxWingsBlock.java b/src/main/java/ru/betterend/blocks/FilaluxWingsBlock.java index b9721334..d13edb54 100644 --- a/src/main/java/ru/betterend/blocks/FilaluxWingsBlock.java +++ b/src/main/java/ru/betterend/blocks/FilaluxWingsBlock.java @@ -1,9 +1,6 @@ package ru.betterend.blocks; -import java.util.EnumMap; - import com.google.common.collect.Maps; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; @@ -15,11 +12,13 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.blocks.basis.AttachedBlock; +import ru.bclib.blocks.BaseAttachedBlock; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -public class FilaluxWingsBlock extends AttachedBlock implements IRenderTypeable { +import java.util.EnumMap; + +public class FilaluxWingsBlock extends BaseAttachedBlock implements IRenderTypeable { private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); public FilaluxWingsBlock() { diff --git a/src/main/java/ru/betterend/blocks/GlowingHymenophoreBlock.java b/src/main/java/ru/betterend/blocks/GlowingHymenophoreBlock.java index c6a01f77..699fc309 100644 --- a/src/main/java/ru/betterend/blocks/GlowingHymenophoreBlock.java +++ b/src/main/java/ru/betterend/blocks/GlowingHymenophoreBlock.java @@ -4,9 +4,9 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class GlowingHymenophoreBlock extends BlockBase { +public class GlowingHymenophoreBlock extends BaseBlock { public GlowingHymenophoreBlock() { super(FabricBlockSettings.of(Material.WOOD).breakByTool(FabricToolTags.AXES).luminance(15).sound(SoundType.WART_BLOCK)); } diff --git a/src/main/java/ru/betterend/blocks/GlowingPillarLuminophorBlock.java b/src/main/java/ru/betterend/blocks/GlowingPillarLuminophorBlock.java index 3eeb97ce..1a3c6fe0 100644 --- a/src/main/java/ru/betterend/blocks/GlowingPillarLuminophorBlock.java +++ b/src/main/java/ru/betterend/blocks/GlowingPillarLuminophorBlock.java @@ -14,11 +14,11 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; import ru.betterend.registry.EndBlocks; -public class GlowingPillarLuminophorBlock extends BlockBase { - public static final BooleanProperty NATURAL = BlockProperties.NATURAL; +public class GlowingPillarLuminophorBlock extends BaseBlock { + public static final BooleanProperty NATURAL = EndBlockProperties.NATURAL; public GlowingPillarLuminophorBlock() { super(FabricBlockSettings.of(Material.LEAVES) diff --git a/src/main/java/ru/betterend/blocks/GlowingPillarRootsBlock.java b/src/main/java/ru/betterend/blocks/GlowingPillarRootsBlock.java index 4057fa93..fe1f49ef 100644 --- a/src/main/java/ru/betterend/blocks/GlowingPillarRootsBlock.java +++ b/src/main/java/ru/betterend/blocks/GlowingPillarRootsBlock.java @@ -9,8 +9,9 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.UpDownPlantBlock; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; +import ru.bclib.blocks.UpDownPlantBlock; import ru.betterend.registry.EndBlocks; public class GlowingPillarRootsBlock extends UpDownPlantBlock { diff --git a/src/main/java/ru/betterend/blocks/GlowingPillarSeedBlock.java b/src/main/java/ru/betterend/blocks/GlowingPillarSeedBlock.java index 296363a8..6af3f76d 100644 --- a/src/main/java/ru/betterend/blocks/GlowingPillarSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/GlowingPillarSeedBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; @@ -13,13 +11,17 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.material.Material; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.bclib.blocks.BlockProperties; import ru.betterend.blocks.basis.EndPlantWithAgeBlock; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class GlowingPillarSeedBlock extends EndPlantWithAgeBlock { + public GlowingPillarSeedBlock() { super(FabricBlockSettings.of(Material.PLANT) .breakByTool(FabricToolTags.SHEARS) @@ -42,14 +44,12 @@ public class GlowingPillarSeedBlock extends EndPlantWithAgeBlock { BlockState roots = EndBlocks.GLOWING_PILLAR_ROOTS.defaultBlockState(); if (height < 2) { BlocksHelper.setWithUpdate(world, mut, roots.setValue(BlockProperties.TRIPLE_SHAPE, TripleShape.MIDDLE)); - mut.move(Direction.UP); - } - else { + } else { BlocksHelper.setWithUpdate(world, mut, roots.setValue(BlockProperties.TRIPLE_SHAPE, TripleShape.BOTTOM)); mut.move(Direction.UP); BlocksHelper.setWithUpdate(world, mut, roots.setValue(BlockProperties.TRIPLE_SHAPE, TripleShape.TOP)); - mut.move(Direction.UP); } + mut.move(Direction.UP); BlocksHelper.setWithUpdate(world, mut, EndBlocks.GLOWING_PILLAR_LUMINOPHOR.defaultBlockState().setValue(BlueVineLanternBlock.NATURAL, true)); for (Direction dir: BlocksHelper.DIRECTIONS) { pos = mut.relative(dir); diff --git a/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java b/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java index 19338464..ed443d8f 100644 --- a/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java +++ b/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java @@ -1,10 +1,6 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; - import com.google.common.collect.Lists; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.client.color.block.BlockColor; @@ -23,15 +19,18 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import ru.bclib.blocks.BaseBlock; import ru.bclib.util.ColorUtil; import ru.bclib.util.MHelper; -import ru.betterend.blocks.basis.BlockBase; import ru.betterend.interfaces.IColorProvider; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; -public class HelixTreeLeavesBlock extends BlockBase implements IColorProvider { - public static final IntegerProperty COLOR = BlockProperties.COLOR; +import java.util.Collections; +import java.util.List; + +public class HelixTreeLeavesBlock extends BaseBlock implements IColorProvider { + public static final IntegerProperty COLOR = EndBlockProperties.COLOR; private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0); public HelixTreeLeavesBlock() { diff --git a/src/main/java/ru/betterend/blocks/HelixTreeSaplingBlock.java b/src/main/java/ru/betterend/blocks/HelixTreeSaplingBlock.java index 283cd3dc..527cfd49 100644 --- a/src/main/java/ru/betterend/blocks/HelixTreeSaplingBlock.java +++ b/src/main/java/ru/betterend/blocks/HelixTreeSaplingBlock.java @@ -1,7 +1,7 @@ package ru.betterend.blocks; import net.minecraft.world.level.levelgen.feature.Feature; -import ru.betterend.blocks.basis.FeatureSaplingBlock; +import ru.bclib.blocks.FeatureSaplingBlock; import ru.betterend.registry.EndFeatures; public class HelixTreeSaplingBlock extends FeatureSaplingBlock { diff --git a/src/main/java/ru/betterend/blocks/HydraluxBlock.java b/src/main/java/ru/betterend/blocks/HydraluxBlock.java index b5769ac4..f8733efc 100644 --- a/src/main/java/ru/betterend/blocks/HydraluxBlock.java +++ b/src/main/java/ru/betterend/blocks/HydraluxBlock.java @@ -1,11 +1,6 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; -import java.util.Random; - import com.google.common.collect.Lists; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -22,14 +17,20 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.material.Material; import net.minecraft.world.level.storage.loot.LootContext; +import ru.bclib.api.TagAPI; +import ru.bclib.blocks.UnderwaterPlantBlock; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties.HydraluxShape; -import ru.betterend.blocks.basis.UnderwaterPlantBlock; +import ru.betterend.blocks.EndBlockProperties.HydraluxShape; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; +import java.util.Collections; +import java.util.List; +import java.util.Random; + public class HydraluxBlock extends UnderwaterPlantBlock { - public static final EnumProperty SHAPE = BlockProperties.HYDRALUX_SHAPE; + + public static final EnumProperty SHAPE = EndBlockProperties.HYDRALUX_SHAPE; public HydraluxBlock() { super(FabricBlockSettings.of(Material.WATER_PLANT) @@ -59,7 +60,12 @@ public class HydraluxBlock extends UnderwaterPlantBlock { return down.is(this) && world.getBlockState(pos.above()).is(this); } } - + + @Override + protected boolean isTerrain(BlockState state) { + return state.is(TagAPI.END_GROUND); + } + @Override public boolean isValidBonemealTarget(BlockGetter world, BlockPos pos, BlockState state, boolean isClient) { return false; diff --git a/src/main/java/ru/betterend/blocks/HydraluxPetalBlock.java b/src/main/java/ru/betterend/blocks/HydraluxPetalBlock.java index 0d5ded08..5c82d09a 100644 --- a/src/main/java/ru/betterend/blocks/HydraluxPetalBlock.java +++ b/src/main/java/ru/betterend/blocks/HydraluxPetalBlock.java @@ -8,9 +8,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class HydraluxPetalBlock extends BlockBase { +public class HydraluxPetalBlock extends BaseBlock { public HydraluxPetalBlock() { this(FabricBlockSettings.of(Material.PLANT) .breakByTool(FabricToolTags.AXES) diff --git a/src/main/java/ru/betterend/blocks/HydraluxSaplingBlock.java b/src/main/java/ru/betterend/blocks/HydraluxSaplingBlock.java index b5a61b28..3a81b17e 100644 --- a/src/main/java/ru/betterend/blocks/HydraluxSaplingBlock.java +++ b/src/main/java/ru/betterend/blocks/HydraluxSaplingBlock.java @@ -1,19 +1,20 @@ package ru.betterend.blocks; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.UnderwaterPlantWithAgeBlock; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties.HydraluxShape; -import ru.betterend.blocks.basis.UnderwaterPlantWithAgeBlock; +import ru.betterend.blocks.EndBlockProperties.HydraluxShape; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class HydraluxSaplingBlock extends UnderwaterPlantWithAgeBlock { + @Override public void grow(WorldGenLevel world, Random random, BlockPos pos) { int h = MHelper.randRange(4, 8, random); @@ -28,18 +29,18 @@ public class HydraluxSaplingBlock extends UnderwaterPlantWithAgeBlock { mut.setY(pos.getY()); BlockState state = EndBlocks.HYDRALUX.defaultBlockState(); - BlocksHelper.setWithoutUpdate(world, pos, state.setValue(BlockProperties.HYDRALUX_SHAPE, HydraluxShape.ROOTS)); + BlocksHelper.setWithoutUpdate(world, pos, state.setValue(EndBlockProperties.HYDRALUX_SHAPE, HydraluxShape.ROOTS)); for (int i = 1; i < h - 2; i++) { mut.setY(pos.getY() + i); - BlocksHelper.setWithoutUpdate(world, mut, state.setValue(BlockProperties.HYDRALUX_SHAPE, HydraluxShape.VINE)); + BlocksHelper.setWithoutUpdate(world, mut, state.setValue(EndBlockProperties.HYDRALUX_SHAPE, HydraluxShape.VINE)); } mut.setY(mut.getY() + 1); boolean big = random.nextBoolean(); - BlocksHelper.setWithoutUpdate(world, mut, state.setValue(BlockProperties.HYDRALUX_SHAPE, big ? HydraluxShape.FLOWER_BIG_BOTTOM : HydraluxShape.FLOWER_SMALL_BOTTOM)); + BlocksHelper.setWithoutUpdate(world, mut, state.setValue(EndBlockProperties.HYDRALUX_SHAPE, big ? HydraluxShape.FLOWER_BIG_BOTTOM : HydraluxShape.FLOWER_SMALL_BOTTOM)); mut.setY(mut.getY() + 1); - BlocksHelper.setWithoutUpdate(world, mut, state.setValue(BlockProperties.HYDRALUX_SHAPE, big ? HydraluxShape.FLOWER_BIG_TOP : HydraluxShape.FLOWER_SMALL_TOP)); + BlocksHelper.setWithoutUpdate(world, mut, state.setValue(EndBlockProperties.HYDRALUX_SHAPE, big ? HydraluxShape.FLOWER_BIG_TOP : HydraluxShape.FLOWER_SMALL_TOP)); } @Override diff --git a/src/main/java/ru/betterend/blocks/HydrothermalVentBlock.java b/src/main/java/ru/betterend/blocks/HydrothermalVentBlock.java index 0067500a..684ea0bc 100644 --- a/src/main/java/ru/betterend/blocks/HydrothermalVentBlock.java +++ b/src/main/java/ru/betterend/blocks/HydrothermalVentBlock.java @@ -1,9 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -19,12 +15,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.EntityBlock; -import net.minecraft.world.level.block.LiquidBlockContainer; -import net.minecraft.world.level.block.SimpleWaterloggedBlock; -import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; @@ -36,13 +27,18 @@ import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.Nullable; +import ru.bclib.blocks.BaseBlockNotFull; +import ru.bclib.blocks.BlockProperties; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.BlockBaseNotFull; import ru.betterend.blocks.entities.BlockEntityHydrothermalVent; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndParticles; -public class HydrothermalVentBlock extends BlockBaseNotFull implements EntityBlock, LiquidBlockContainer, SimpleWaterloggedBlock { +import java.util.Random; + +@SuppressWarnings("deprecation") +public class HydrothermalVentBlock extends BaseBlockNotFull implements EntityBlock, LiquidBlockContainer, SimpleWaterloggedBlock { public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVE; private static final VoxelShape SHAPE = Block.box(1, 1, 1, 15, 16, 15); @@ -102,7 +98,7 @@ public class HydrothermalVentBlock extends BlockBaseNotFull implements EntityBlo @Override public FluidState getFluidState(BlockState state) { - return (Boolean) state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); + return state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); } @Override diff --git a/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java b/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java index 326c9a6e..798cffa1 100644 --- a/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java +++ b/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java @@ -34,7 +34,7 @@ import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.noise.OpenSimplexNoise; public class JellyshroomCapBlock extends SlimeBlock implements IRenderTypeable, BlockModelProvider, IColorProvider { - public static final IntegerProperty COLOR = BlockProperties.COLOR; + public static final IntegerProperty COLOR = EndBlockProperties.COLOR; private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0); private final Vec3i colorStart; private final Vec3i colorEnd; diff --git a/src/main/java/ru/betterend/blocks/LacugroveSaplingBlock.java b/src/main/java/ru/betterend/blocks/LacugroveSaplingBlock.java index 72063a4c..5c2a678e 100644 --- a/src/main/java/ru/betterend/blocks/LacugroveSaplingBlock.java +++ b/src/main/java/ru/betterend/blocks/LacugroveSaplingBlock.java @@ -4,7 +4,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.Feature; -import ru.betterend.blocks.basis.FeatureSaplingBlock; +import ru.bclib.blocks.FeatureSaplingBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; diff --git a/src/main/java/ru/betterend/blocks/LanceleafBlock.java b/src/main/java/ru/betterend/blocks/LanceleafBlock.java index 12c7c261..479b4309 100644 --- a/src/main/java/ru/betterend/blocks/LanceleafBlock.java +++ b/src/main/java/ru/betterend/blocks/LanceleafBlock.java @@ -1,8 +1,5 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; @@ -15,19 +12,24 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.storage.loot.LootContext; +import ru.bclib.blocks.BlockProperties.PentaShape; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties.PentaShape; +import ru.bclib.blocks.BlockProperties; import ru.betterend.blocks.basis.EndPlantBlock; import ru.betterend.registry.EndBlocks; +import java.util.Collections; +import java.util.List; + public class LanceleafBlock extends EndPlantBlock { + public static final EnumProperty SHAPE = BlockProperties.PENTA_SHAPE; public static final IntegerProperty ROTATION = BlockProperties.ROTATION; public LanceleafBlock() { super(); } - + @Override protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { stateManager.add(SHAPE, ROTATION); diff --git a/src/main/java/ru/betterend/blocks/LanceleafSeedBlock.java b/src/main/java/ru/betterend/blocks/LanceleafSeedBlock.java index fcec05ae..c70d083e 100644 --- a/src/main/java/ru/betterend/blocks/LanceleafSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/LanceleafSeedBlock.java @@ -8,9 +8,10 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BlockProperties.PentaShape; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties.PentaShape; +import ru.bclib.blocks.BlockProperties; import ru.betterend.blocks.basis.EndPlantWithAgeBlock; import ru.betterend.registry.EndBlocks; diff --git a/src/main/java/ru/betterend/blocks/LargeAmaranitaBlock.java b/src/main/java/ru/betterend/blocks/LargeAmaranitaBlock.java index befeb7c9..d45f9de2 100644 --- a/src/main/java/ru/betterend/blocks/LargeAmaranitaBlock.java +++ b/src/main/java/ru/betterend/blocks/LargeAmaranitaBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.betterend.blocks.basis.EndPlantBlock; import ru.betterend.registry.EndBlocks; diff --git a/src/main/java/ru/betterend/blocks/LucerniaSaplingBlock.java b/src/main/java/ru/betterend/blocks/LucerniaSaplingBlock.java index cb9a74e1..91ed218a 100644 --- a/src/main/java/ru/betterend/blocks/LucerniaSaplingBlock.java +++ b/src/main/java/ru/betterend/blocks/LucerniaSaplingBlock.java @@ -4,7 +4,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.Feature; -import ru.betterend.blocks.basis.FeatureSaplingBlock; +import ru.bclib.blocks.FeatureSaplingBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; diff --git a/src/main/java/ru/betterend/blocks/LumecornBlock.java b/src/main/java/ru/betterend/blocks/LumecornBlock.java index 8d5b1b8c..11694729 100644 --- a/src/main/java/ru/betterend/blocks/LumecornBlock.java +++ b/src/main/java/ru/betterend/blocks/LumecornBlock.java @@ -1,8 +1,5 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -23,15 +20,19 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BaseBlockNotFull; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties.LumecornShape; -import ru.betterend.blocks.basis.BlockBaseNotFull; +import ru.betterend.blocks.EndBlockProperties.LumecornShape; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; -public class LumecornBlock extends BlockBaseNotFull implements IRenderTypeable { +import java.util.Collections; +import java.util.List; + +@SuppressWarnings("deprecation") +public class LumecornBlock extends BaseBlockNotFull implements IRenderTypeable { public static final EnumProperty SHAPE = EnumProperty.create("shape", LumecornShape.class); private static final VoxelShape SHAPE_BOTTOM = Block.box(6, 0, 6, 10, 16, 10); private static final VoxelShape SHAPE_TOP = Block.box(6, 0, 6, 10, 8, 10); diff --git a/src/main/java/ru/betterend/blocks/LumecornSeedBlock.java b/src/main/java/ru/betterend/blocks/LumecornSeedBlock.java index d3487a23..aaa50c3f 100644 --- a/src/main/java/ru/betterend/blocks/LumecornSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/LumecornSeedBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockBehaviour; @@ -10,7 +8,10 @@ import ru.betterend.blocks.basis.EndPlantWithAgeBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; +import java.util.Random; + public class LumecornSeedBlock extends EndPlantWithAgeBlock { + @Override public void growAdult(WorldGenLevel world, Random random, BlockPos pos) { EndFeatures.LUMECORN.getFeature().place(world, null, random, pos, null); diff --git a/src/main/java/ru/betterend/blocks/MengerSpongeBlock.java b/src/main/java/ru/betterend/blocks/MengerSpongeBlock.java index b2958584..04a5ac51 100644 --- a/src/main/java/ru/betterend/blocks/MengerSpongeBlock.java +++ b/src/main/java/ru/betterend/blocks/MengerSpongeBlock.java @@ -1,9 +1,6 @@ package ru.betterend.blocks; -import java.util.Queue; - import com.google.common.collect.Lists; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -19,12 +16,15 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.basis.BlockBaseNotFull; +import ru.bclib.blocks.BaseBlockNotFull; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.registry.EndBlocks; -public class MengerSpongeBlock extends BlockBaseNotFull implements IRenderTypeable { +import java.util.Queue; + +@SuppressWarnings("deprecation") +public class MengerSpongeBlock extends BaseBlockNotFull implements IRenderTypeable { public MengerSpongeBlock() { super(FabricBlockSettings.copyOf(Blocks.SPONGE).noOcclusion()); } @@ -46,18 +46,15 @@ public class MengerSpongeBlock extends BlockBaseNotFull implements IRenderTypeab private boolean absorbWater(LevelAccessor world, BlockPos pos) { Queue> queue = Lists.newLinkedList(); - queue.add(new Tuple(pos, 0)); + queue.add(new Tuple<>(pos, 0)); int i = 0; while (!queue.isEmpty()) { Tuple pair = queue.poll(); - BlockPos blockPos = (BlockPos) pair.getA(); - int j = (Integer) pair.getB(); - Direction[] var8 = Direction.values(); - int var9 = var8.length; + BlockPos blockPos = pair.getA(); + int j = pair.getB(); - for (int var10 = 0; var10 < var9; ++var10) { - Direction direction = var8[var10]; + for (Direction direction : Direction.values()) { BlockPos blockPos2 = blockPos.relative(direction); BlockState blockState = world.getBlockState(blockPos2); FluidState fluidState = world.getFluidState(blockPos2); @@ -66,23 +63,21 @@ public class MengerSpongeBlock extends BlockBaseNotFull implements IRenderTypeab if (blockState.getBlock() instanceof BucketPickup && ((BucketPickup) blockState.getBlock()).takeLiquid(world, blockPos2, blockState) != Fluids.EMPTY) { ++i; if (j < 6) { - queue.add(new Tuple(blockPos2, j + 1)); + queue.add(new Tuple<>(blockPos2, j + 1)); } - } - else if (blockState.getBlock() instanceof LiquidBlock) { + } else if (blockState.getBlock() instanceof LiquidBlock) { world.setBlock(blockPos2, Blocks.AIR.defaultBlockState(), 3); ++i; if (j < 6) { - queue.add(new Tuple(blockPos2, j + 1)); + queue.add(new Tuple<>(blockPos2, j + 1)); } - } - else if (material == Material.WATER_PLANT || material == Material.REPLACEABLE_WATER_PLANT) { + } else if (material == Material.WATER_PLANT || material == Material.REPLACEABLE_WATER_PLANT) { BlockEntity blockEntity = blockState.getBlock().isEntityBlock() ? world.getBlockEntity(blockPos2) : null; dropResources(blockState, world, blockPos2, blockEntity); world.setBlock(blockPos2, Blocks.AIR.defaultBlockState(), 3); ++i; if (j < 6) { - queue.add(new Tuple(blockPos2, j + 1)); + queue.add(new Tuple<>(blockPos2, j + 1)); } } } diff --git a/src/main/java/ru/betterend/blocks/MengerSpongeWetBlock.java b/src/main/java/ru/betterend/blocks/MengerSpongeWetBlock.java index f7b9c57b..a301abd5 100644 --- a/src/main/java/ru/betterend/blocks/MengerSpongeWetBlock.java +++ b/src/main/java/ru/betterend/blocks/MengerSpongeWetBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -19,13 +17,16 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; +import ru.bclib.blocks.BaseBlockNotFull; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.BlockBaseNotFull; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.registry.EndBlocks; -public class MengerSpongeWetBlock extends BlockBaseNotFull implements IRenderTypeable { +import java.util.Random; + +@SuppressWarnings("deprecation") +public class MengerSpongeWetBlock extends BaseBlockNotFull implements IRenderTypeable { public MengerSpongeWetBlock() { super(FabricBlockSettings.copyOf(Blocks.WET_SPONGE).noOcclusion()); } @@ -35,7 +36,7 @@ public class MengerSpongeWetBlock extends BlockBaseNotFull implements IRenderTyp if (world.dimensionType().ultraWarm()) { world.setBlock(pos, EndBlocks.MENGER_SPONGE.defaultBlockState(), 3); world.levelEvent(2009, pos, 0); - world.playSound((Player) null, pos, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 1.0F, (1.0F + world.getRandom().nextFloat() * 0.2F) * 0.7F); + world.playSound(null, pos, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 1.0F, (1.0F + world.getRandom().nextFloat() * 0.2F) * 0.7F); } } @@ -47,9 +48,9 @@ public class MengerSpongeWetBlock extends BlockBaseNotFull implements IRenderTyp BlockPos blockPos = pos.relative(direction); BlockState blockState = world.getBlockState(blockPos); if (!state.canOcclude() || !blockState.isFaceSturdy(world, blockPos, direction.getOpposite())) { - double x = (double) pos.getX(); - double y = (double) pos.getY(); - double z = (double) pos.getZ(); + double x = pos.getX(); + double y = pos.getY(); + double z = pos.getZ(); if (direction == Direction.DOWN) { y -= 0.05; x += random.nextDouble(); diff --git a/src/main/java/ru/betterend/blocks/MissingTileBlock.java b/src/main/java/ru/betterend/blocks/MissingTileBlock.java index a9c7eb5e..7a516557 100644 --- a/src/main/java/ru/betterend/blocks/MissingTileBlock.java +++ b/src/main/java/ru/betterend/blocks/MissingTileBlock.java @@ -2,9 +2,9 @@ package ru.betterend.blocks; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.world.level.block.Blocks; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class MissingTileBlock extends BlockBase { +public class MissingTileBlock extends BaseBlock { public MissingTileBlock() { super(FabricBlockSettings.copyOf(Blocks.END_STONE)); } diff --git a/src/main/java/ru/betterend/blocks/MossyDragonBoneBlock.java b/src/main/java/ru/betterend/blocks/MossyDragonBoneBlock.java index 662481cc..5dd2b6ba 100644 --- a/src/main/java/ru/betterend/blocks/MossyDragonBoneBlock.java +++ b/src/main/java/ru/betterend/blocks/MossyDragonBoneBlock.java @@ -1,9 +1,5 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; -import java.util.Random; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -18,10 +14,15 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.lighting.LayerLightEngine; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import ru.betterend.blocks.basis.EndPillarBlock; +import ru.bclib.blocks.BaseRotatedPillarBlock; import ru.betterend.registry.EndBlocks; -public class MossyDragonBoneBlock extends EndPillarBlock { +import java.util.Collections; +import java.util.List; +import java.util.Random; + +@SuppressWarnings("deprecation") +public class MossyDragonBoneBlock extends BaseRotatedPillarBlock { public MossyDragonBoneBlock() { super(FabricBlockSettings.copyOf(Blocks.BONE_BLOCK).hardness(0.5F).randomTicks()); } diff --git a/src/main/java/ru/betterend/blocks/MossyGlowshroomCapBlock.java b/src/main/java/ru/betterend/blocks/MossyGlowshroomCapBlock.java index 8ba518da..982d4cf6 100644 --- a/src/main/java/ru/betterend/blocks/MossyGlowshroomCapBlock.java +++ b/src/main/java/ru/betterend/blocks/MossyGlowshroomCapBlock.java @@ -9,11 +9,11 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; import ru.betterend.registry.EndBlocks; -public class MossyGlowshroomCapBlock extends BlockBase { - public static final BooleanProperty TRANSITION = BlockProperties.TRANSITION; +public class MossyGlowshroomCapBlock extends BaseBlock { + public static final BooleanProperty TRANSITION = EndBlockProperties.TRANSITION; public MossyGlowshroomCapBlock() { super(FabricBlockSettings.of(Material.WOOD).breakByTool(FabricToolTags.AXES).sound(SoundType.WOOD)); diff --git a/src/main/java/ru/betterend/blocks/MossyGlowshroomSaplingBlock.java b/src/main/java/ru/betterend/blocks/MossyGlowshroomSaplingBlock.java index 3781d6ba..da75416d 100644 --- a/src/main/java/ru/betterend/blocks/MossyGlowshroomSaplingBlock.java +++ b/src/main/java/ru/betterend/blocks/MossyGlowshroomSaplingBlock.java @@ -4,11 +4,12 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.Feature; -import ru.betterend.blocks.basis.FeatureSaplingBlock; +import ru.bclib.blocks.FeatureSaplingBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; public class MossyGlowshroomSaplingBlock extends FeatureSaplingBlock { + public MossyGlowshroomSaplingBlock() { super(7); } diff --git a/src/main/java/ru/betterend/blocks/MossyObsidian.java b/src/main/java/ru/betterend/blocks/MossyObsidian.java index 4d2e3a12..f0c05744 100644 --- a/src/main/java/ru/betterend/blocks/MossyObsidian.java +++ b/src/main/java/ru/betterend/blocks/MossyObsidian.java @@ -1,9 +1,5 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; -import java.util.Random; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -18,9 +14,13 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.lighting.LayerLightEngine; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class MossyObsidian extends BlockBase { +import java.util.Collections; +import java.util.List; +import java.util.Random; + +public class MossyObsidian extends BaseBlock { public MossyObsidian() { super(FabricBlockSettings.copyOf(Blocks.OBSIDIAN).hardness(3).randomTicks()); } diff --git a/src/main/java/ru/betterend/blocks/NeonCactusBlock.java b/src/main/java/ru/betterend/blocks/NeonCactusBlock.java index 55fa5910..2d1d9acd 100644 --- a/src/main/java/ru/betterend/blocks/NeonCactusBlock.java +++ b/src/main/java/ru/betterend/blocks/NeonCactusBlock.java @@ -2,9 +2,9 @@ package ru.betterend.blocks; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.world.level.block.Blocks; -import ru.betterend.blocks.basis.EndPillarBlock; +import ru.bclib.blocks.BaseRotatedPillarBlock; -public class NeonCactusBlock extends EndPillarBlock { +public class NeonCactusBlock extends BaseRotatedPillarBlock { public NeonCactusBlock() { super(FabricBlockSettings.copyOf(Blocks.CACTUS).luminance(15)); } diff --git a/src/main/java/ru/betterend/blocks/NeonCactusPlantBlock.java b/src/main/java/ru/betterend/blocks/NeonCactusPlantBlock.java index 43c66f8c..e4bcd00e 100644 --- a/src/main/java/ru/betterend/blocks/NeonCactusPlantBlock.java +++ b/src/main/java/ru/betterend/blocks/NeonCactusPlantBlock.java @@ -1,12 +1,7 @@ package ru.betterend.blocks; -import java.util.EnumMap; -import java.util.List; -import java.util.Random; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; @@ -16,16 +11,8 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.WorldGenLevel; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.SimpleWaterloggedBlock; +import net.minecraft.world.level.*; +import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -38,18 +25,24 @@ import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BaseBlockNotFull; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties.CactusBottom; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.BlockBaseNotFull; +import ru.betterend.blocks.EndBlockProperties.CactusBottom; +import ru.bclib.blocks.BlockProperties; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.registry.EndBlocks; -public class NeonCactusPlantBlock extends BlockBaseNotFull implements SimpleWaterloggedBlock, IRenderTypeable { +import java.util.EnumMap; +import java.util.List; +import java.util.Random; + +@SuppressWarnings("deprecation") +public class NeonCactusPlantBlock extends BaseBlockNotFull implements SimpleWaterloggedBlock, IRenderTypeable { public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; - public static final EnumProperty CACTUS_BOTTOM = BlockProperties.CACTUS_BOTTOM; + public static final EnumProperty CACTUS_BOTTOM = EndBlockProperties.CACTUS_BOTTOM; public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; public static final DirectionProperty FACING = BlockStateProperties.FACING; @@ -102,13 +95,13 @@ public class NeonCactusPlantBlock extends BlockBaseNotFull implements SimpleWate @Override public FluidState getFluidState(BlockState state) { - return (Boolean) state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); + return state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); } @Override public BlockState updateShape(BlockState state, Direction direction, BlockState newState, LevelAccessor world, BlockPos pos, BlockPos posFrom) { world.getBlockTicks().scheduleTick(pos, this, 2); - if ((Boolean) state.getValue(WATERLOGGED)) { + if (state.getValue(WATERLOGGED)) { world.getLiquidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); } Direction dir = state.getValue(FACING); diff --git a/src/main/java/ru/betterend/blocks/PondAnemoneBlock.java b/src/main/java/ru/betterend/blocks/PondAnemoneBlock.java index 1fed3cf3..b4f12131 100644 --- a/src/main/java/ru/betterend/blocks/PondAnemoneBlock.java +++ b/src/main/java/ru/betterend/blocks/PondAnemoneBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -17,9 +15,11 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.blocks.basis.UnderwaterPlantBlock; +import ru.betterend.blocks.basis.EndUnderwaterPlantBlock; -public class PondAnemoneBlock extends UnderwaterPlantBlock { +import java.util.Random; + +public class PondAnemoneBlock extends EndUnderwaterPlantBlock { private static final VoxelShape SHAPE = Block.box(2, 0, 2, 14, 14, 14); public PondAnemoneBlock() { diff --git a/src/main/java/ru/betterend/blocks/PythadendronSaplingBlock.java b/src/main/java/ru/betterend/blocks/PythadendronSaplingBlock.java index 2455e3b8..1f01907e 100644 --- a/src/main/java/ru/betterend/blocks/PythadendronSaplingBlock.java +++ b/src/main/java/ru/betterend/blocks/PythadendronSaplingBlock.java @@ -4,7 +4,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.Feature; -import ru.betterend.blocks.basis.FeatureSaplingBlock; +import ru.bclib.blocks.FeatureSaplingBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; diff --git a/src/main/java/ru/betterend/blocks/RespawnObeliskBlock.java b/src/main/java/ru/betterend/blocks/RespawnObeliskBlock.java index d4480df1..e1dc2aa3 100644 --- a/src/main/java/ru/betterend/blocks/RespawnObeliskBlock.java +++ b/src/main/java/ru/betterend/blocks/RespawnObeliskBlock.java @@ -1,11 +1,6 @@ package ru.betterend.blocks; -import java.util.List; - -import org.jetbrains.annotations.Nullable; - import com.google.common.collect.Lists; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.item.ItemColor; @@ -35,10 +30,12 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.Nullable; +import ru.bclib.blocks.BaseBlock; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; import ru.bclib.util.ColorUtil; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.BlockBase; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IColorProvider; import ru.betterend.interfaces.IRenderTypeable; @@ -46,7 +43,9 @@ import ru.betterend.particle.InfusionParticleType; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; -public class RespawnObeliskBlock extends BlockBase implements IColorProvider, IRenderTypeable { +import java.util.List; + +public class RespawnObeliskBlock extends BaseBlock implements IColorProvider, IRenderTypeable { private static final VoxelShape VOXEL_SHAPE_BOTTOM = Block.box(1, 0, 1, 15, 16, 15); private static final VoxelShape VOXEL_SHAPE_MIDDLE_TOP = Block.box(2, 0, 2, 14, 16, 14); diff --git a/src/main/java/ru/betterend/blocks/RunedFlavolite.java b/src/main/java/ru/betterend/blocks/RunedFlavolite.java index dcb15b8e..e097d68f 100644 --- a/src/main/java/ru/betterend/blocks/RunedFlavolite.java +++ b/src/main/java/ru/betterend/blocks/RunedFlavolite.java @@ -1,9 +1,6 @@ package ru.betterend.blocks; -import java.util.List; - import com.google.common.collect.Lists; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Explosion; @@ -13,11 +10,14 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.storage.loot.LootContext; +import ru.bclib.blocks.BaseBlock; +import ru.bclib.blocks.BlockProperties; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.BlockBase; import ru.betterend.registry.EndBlocks; -public class RunedFlavolite extends BlockBase { +import java.util.List; + +public class RunedFlavolite extends BaseBlock { public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVE; public RunedFlavolite(boolean unbreakable) { diff --git a/src/main/java/ru/betterend/blocks/ShadowBerryBlock.java b/src/main/java/ru/betterend/blocks/ShadowBerryBlock.java index 0bbe5d06..997a8f85 100644 --- a/src/main/java/ru/betterend/blocks/ShadowBerryBlock.java +++ b/src/main/java/ru/betterend/blocks/ShadowBerryBlock.java @@ -6,11 +6,11 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.blocks.basis.EndCropBlock; +import ru.bclib.blocks.BaseCropBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; -public class ShadowBerryBlock extends EndCropBlock { +public class ShadowBerryBlock extends BaseCropBlock { private static final VoxelShape SHAPE = Block.box(1, 0, 1, 15, 8, 15); public ShadowBerryBlock() { diff --git a/src/main/java/ru/betterend/blocks/SilkMothHiveBlock.java b/src/main/java/ru/betterend/blocks/SilkMothHiveBlock.java index fbbde1c3..2feabc22 100644 --- a/src/main/java/ru/betterend/blocks/SilkMothHiveBlock.java +++ b/src/main/java/ru/betterend/blocks/SilkMothHiveBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; @@ -29,16 +27,18 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; +import ru.bclib.blocks.BaseBlock; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.basis.BlockBase; import ru.betterend.entity.SilkMothEntity; import ru.betterend.registry.EndEntities; import ru.betterend.registry.EndItems; -public class SilkMothHiveBlock extends BlockBase { +import java.util.Random; + +public class SilkMothHiveBlock extends BaseBlock { public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; - public static final IntegerProperty FULLNESS = BlockProperties.FULLNESS; + public static final IntegerProperty FULLNESS = EndBlockProperties.FULLNESS; public SilkMothHiveBlock() { super(FabricBlockSettings.of(Material.WOOD).breakByHand(true).hardness(0.5F).resistance(0.1F).sound(SoundType.WOOL).noOcclusion().randomTicks()); diff --git a/src/main/java/ru/betterend/blocks/SilkMothNestBlock.java b/src/main/java/ru/betterend/blocks/SilkMothNestBlock.java index e1efd4ed..730cbd9c 100644 --- a/src/main/java/ru/betterend/blocks/SilkMothNestBlock.java +++ b/src/main/java/ru/betterend/blocks/SilkMothNestBlock.java @@ -1,9 +1,5 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.List; -import java.util.Random; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; @@ -21,11 +17,7 @@ import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -39,19 +31,23 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.blocks.BaseBlock; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.basis.BlockBase; import ru.betterend.client.render.ERenderLayer; import ru.betterend.entity.SilkMothEntity; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.registry.EndEntities; import ru.betterend.registry.EndItems; -public class SilkMothNestBlock extends BlockBase implements IRenderTypeable { - public static final BooleanProperty ACTIVE = BlockProperties.ACTIVE; +import java.util.Collections; +import java.util.List; +import java.util.Random; + +public class SilkMothNestBlock extends BaseBlock implements IRenderTypeable { + public static final BooleanProperty ACTIVE = EndBlockProperties.ACTIVE; public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; - public static final IntegerProperty FULLNESS = BlockProperties.FULLNESS; + public static final IntegerProperty FULLNESS = EndBlockProperties.FULLNESS; private static final VoxelShape TOP = box(6, 0, 6, 10, 16, 10); private static final VoxelShape BOTTOM = box(0, 0, 0, 16, 16, 16); diff --git a/src/main/java/ru/betterend/blocks/SmallJellyshroomBlock.java b/src/main/java/ru/betterend/blocks/SmallJellyshroomBlock.java index 85cb3a25..941be4ef 100644 --- a/src/main/java/ru/betterend/blocks/SmallJellyshroomBlock.java +++ b/src/main/java/ru/betterend/blocks/SmallJellyshroomBlock.java @@ -1,12 +1,7 @@ package ru.betterend.blocks; -import java.util.EnumMap; -import java.util.List; -import java.util.Random; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; @@ -30,13 +25,17 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BaseAttachedBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.AttachedBlock; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.registry.EndFeatures; -public class SmallJellyshroomBlock extends AttachedBlock implements IRenderTypeable, BonemealableBlock { +import java.util.EnumMap; +import java.util.List; +import java.util.Random; + +public class SmallJellyshroomBlock extends BaseAttachedBlock implements IRenderTypeable, BonemealableBlock { private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); public SmallJellyshroomBlock() { @@ -48,6 +47,7 @@ public class SmallJellyshroomBlock extends AttachedBlock implements IRenderTypea } @Override + @SuppressWarnings("deprecation") public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { return BOUNDING_SHAPES.get(state.getValue(FACING)); } diff --git a/src/main/java/ru/betterend/blocks/SmaragdantCrystalBlock.java b/src/main/java/ru/betterend/blocks/SmaragdantCrystalBlock.java index 6572cbf2..c99d5e79 100644 --- a/src/main/java/ru/betterend/blocks/SmaragdantCrystalBlock.java +++ b/src/main/java/ru/betterend/blocks/SmaragdantCrystalBlock.java @@ -4,9 +4,9 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.basis.EndPillarBlock; +import ru.bclib.blocks.BaseRotatedPillarBlock; -public class SmaragdantCrystalBlock extends EndPillarBlock { +public class SmaragdantCrystalBlock extends BaseRotatedPillarBlock { public SmaragdantCrystalBlock() { super(FabricBlockSettings.of(Material.GLASS) .breakByTool(FabricToolTags.PICKAXES) diff --git a/src/main/java/ru/betterend/blocks/SmaragdantCrystalShardBlock.java b/src/main/java/ru/betterend/blocks/SmaragdantCrystalShardBlock.java index 2e8626a8..5a50f72d 100644 --- a/src/main/java/ru/betterend/blocks/SmaragdantCrystalShardBlock.java +++ b/src/main/java/ru/betterend/blocks/SmaragdantCrystalShardBlock.java @@ -1,9 +1,6 @@ package ru.betterend.blocks; -import java.util.EnumMap; - import com.google.common.collect.Maps; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; @@ -20,19 +17,18 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; +import net.minecraft.world.level.material.*; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.blocks.basis.AttachedBlock; +import ru.bclib.blocks.BaseAttachedBlock; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -public class SmaragdantCrystalShardBlock extends AttachedBlock implements IRenderTypeable, SimpleWaterloggedBlock, LiquidBlockContainer { +import java.util.EnumMap; + +@SuppressWarnings("deprecation") +public class SmaragdantCrystalShardBlock extends BaseAttachedBlock implements IRenderTypeable, SimpleWaterloggedBlock, LiquidBlockContainer { private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; @@ -91,7 +87,7 @@ public class SmaragdantCrystalShardBlock extends AttachedBlock implements IRende @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - Direction direction = (Direction) state.getValue(FACING); + Direction direction = state.getValue(FACING); BlockPos blockPos = pos.relative(direction.getOpposite()); return world.getBlockState(blockPos).isFaceSturdy(world, blockPos, direction); } diff --git a/src/main/java/ru/betterend/blocks/SulphurCrystalBlock.java b/src/main/java/ru/betterend/blocks/SulphurCrystalBlock.java index 6ea374cd..e5b1a8b7 100644 --- a/src/main/java/ru/betterend/blocks/SulphurCrystalBlock.java +++ b/src/main/java/ru/betterend/blocks/SulphurCrystalBlock.java @@ -1,12 +1,7 @@ package ru.betterend.blocks; -import java.util.Collections; -import java.util.EnumMap; -import java.util.List; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; @@ -25,23 +20,24 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; +import net.minecraft.world.level.material.*; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.blocks.BaseAttachedBlock; import ru.bclib.util.MHelper; -import ru.betterend.blocks.basis.AttachedBlock; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; -public class SulphurCrystalBlock extends AttachedBlock implements IRenderTypeable, SimpleWaterloggedBlock, LiquidBlockContainer { +import java.util.Collections; +import java.util.EnumMap; +import java.util.List; + +@SuppressWarnings("deprecation") +public class SulphurCrystalBlock extends BaseAttachedBlock implements IRenderTypeable, SimpleWaterloggedBlock, LiquidBlockContainer { private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); public static final IntegerProperty AGE = IntegerProperty.create("age", 0, 2); public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; @@ -105,7 +101,7 @@ public class SulphurCrystalBlock extends AttachedBlock implements IRenderTypeabl @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - Direction direction = (Direction) state.getValue(FACING); + Direction direction = state.getValue(FACING); BlockPos blockPos = pos.relative(direction.getOpposite()); return world.getBlockState(blockPos).is(EndBlocks.BRIMSTONE); } diff --git a/src/main/java/ru/betterend/blocks/TenaneaFlowersBlock.java b/src/main/java/ru/betterend/blocks/TenaneaFlowersBlock.java index d024a598..f0036c53 100644 --- a/src/main/java/ru/betterend/blocks/TenaneaFlowersBlock.java +++ b/src/main/java/ru/betterend/blocks/TenaneaFlowersBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.color.block.BlockColor; @@ -12,13 +10,15 @@ import net.minecraft.util.Mth; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BaseVineBlock; import ru.bclib.util.ColorUtil; import ru.bclib.util.MHelper; -import ru.betterend.blocks.basis.VineBlock; import ru.betterend.interfaces.IColorProvider; import ru.betterend.registry.EndParticles; -public class TenaneaFlowersBlock extends VineBlock implements IColorProvider { +import java.util.Random; + +public class TenaneaFlowersBlock extends BaseVineBlock implements IColorProvider { public static final Vec3i[] COLORS; public TenaneaFlowersBlock() { @@ -50,9 +50,7 @@ public class TenaneaFlowersBlock extends VineBlock implements IColorProvider { @Override public ItemColor getItemProvider() { - return (stack, tintIndex) -> { - return ColorUtil.color(255, 255, 255); - }; + return (stack, tintIndex) -> ColorUtil.color(255, 255, 255); } @Override diff --git a/src/main/java/ru/betterend/blocks/TenaneaSaplingBlock.java b/src/main/java/ru/betterend/blocks/TenaneaSaplingBlock.java index d08211e2..9928dcc6 100644 --- a/src/main/java/ru/betterend/blocks/TenaneaSaplingBlock.java +++ b/src/main/java/ru/betterend/blocks/TenaneaSaplingBlock.java @@ -4,7 +4,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.Feature; -import ru.betterend.blocks.basis.FeatureSaplingBlock; +import ru.bclib.blocks.FeatureSaplingBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; diff --git a/src/main/java/ru/betterend/blocks/TerminiteBlock.java b/src/main/java/ru/betterend/blocks/TerminiteBlock.java index 19c031c3..66f0a882 100644 --- a/src/main/java/ru/betterend/blocks/TerminiteBlock.java +++ b/src/main/java/ru/betterend/blocks/TerminiteBlock.java @@ -4,9 +4,9 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; -import ru.betterend.blocks.basis.BlockBase; +import ru.bclib.blocks.BaseBlock; -public class TerminiteBlock extends BlockBase { +public class TerminiteBlock extends BaseBlock { public TerminiteBlock() { super(FabricBlockSettings.of(Material.METAL, MaterialColor.WARPED_WART_BLOCK) .hardness(7F) diff --git a/src/main/java/ru/betterend/blocks/TwistedUmbrellaMossBlock.java b/src/main/java/ru/betterend/blocks/TwistedUmbrellaMossBlock.java index 754626e3..2eb6ee77 100644 --- a/src/main/java/ru/betterend/blocks/TwistedUmbrellaMossBlock.java +++ b/src/main/java/ru/betterend/blocks/TwistedUmbrellaMossBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.core.BlockPos; @@ -9,11 +7,13 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BaseDoublePlantBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.DoublePlantBlock; import ru.betterend.blocks.basis.EndPlantBlock; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class TwistedUmbrellaMossBlock extends EndPlantBlock { public TwistedUmbrellaMossBlock() { super(11); @@ -42,8 +42,8 @@ public class TwistedUmbrellaMossBlock extends EndPlantBlock { @Override public void performBonemeal(ServerLevel world, Random random, BlockPos pos, BlockState state) { int rot = world.random.nextInt(4); - BlockState bs = EndBlocks.TWISTED_UMBRELLA_MOSS_TALL.defaultBlockState().setValue(DoublePlantBlock.ROTATION, rot); + BlockState bs = EndBlocks.TWISTED_UMBRELLA_MOSS_TALL.defaultBlockState().setValue(BaseDoublePlantBlock.ROTATION, rot); BlocksHelper.setWithoutUpdate(world, pos, bs); - BlocksHelper.setWithoutUpdate(world, pos.above(), bs.setValue(DoublePlantBlock.TOP, true)); + BlocksHelper.setWithoutUpdate(world, pos.above(), bs.setValue(BaseDoublePlantBlock.TOP, true)); } } diff --git a/src/main/java/ru/betterend/blocks/TwistedUmbrellaMossTallBlock.java b/src/main/java/ru/betterend/blocks/TwistedUmbrellaMossTallBlock.java index 3d0ff3e8..659a8b04 100644 --- a/src/main/java/ru/betterend/blocks/TwistedUmbrellaMossTallBlock.java +++ b/src/main/java/ru/betterend/blocks/TwistedUmbrellaMossTallBlock.java @@ -1,16 +1,16 @@ package ru.betterend.blocks; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; -import ru.betterend.blocks.basis.DoublePlantBlock; +import ru.bclib.blocks.BaseDoublePlantBlock; import ru.betterend.registry.EndBlocks; -public class TwistedUmbrellaMossTallBlock extends DoublePlantBlock { +import java.util.Random; + +public class TwistedUmbrellaMossTallBlock extends BaseDoublePlantBlock { public TwistedUmbrellaMossTallBlock() { super(12); } diff --git a/src/main/java/ru/betterend/blocks/UmbrellaMossBlock.java b/src/main/java/ru/betterend/blocks/UmbrellaMossBlock.java index 7311d30f..11110de6 100644 --- a/src/main/java/ru/betterend/blocks/UmbrellaMossBlock.java +++ b/src/main/java/ru/betterend/blocks/UmbrellaMossBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.core.BlockPos; @@ -9,11 +7,13 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BaseDoublePlantBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.DoublePlantBlock; import ru.betterend.blocks.basis.EndPlantBlock; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class UmbrellaMossBlock extends EndPlantBlock { public UmbrellaMossBlock() { super(11); @@ -42,8 +42,8 @@ public class UmbrellaMossBlock extends EndPlantBlock { @Override public void performBonemeal(ServerLevel world, Random random, BlockPos pos, BlockState state) { int rot = world.random.nextInt(4); - BlockState bs = EndBlocks.UMBRELLA_MOSS_TALL.defaultBlockState().setValue(DoublePlantBlock.ROTATION, rot); + BlockState bs = EndBlocks.UMBRELLA_MOSS_TALL.defaultBlockState().setValue(BaseDoublePlantBlock.ROTATION, rot); BlocksHelper.setWithoutUpdate(world, pos, bs); - BlocksHelper.setWithoutUpdate(world, pos.above(), bs.setValue(DoublePlantBlock.TOP, true)); + BlocksHelper.setWithoutUpdate(world, pos.above(), bs.setValue(BaseDoublePlantBlock.TOP, true)); } } diff --git a/src/main/java/ru/betterend/blocks/UmbrellaMossTallBlock.java b/src/main/java/ru/betterend/blocks/UmbrellaMossTallBlock.java index 51045ffb..8cf39f9c 100644 --- a/src/main/java/ru/betterend/blocks/UmbrellaMossTallBlock.java +++ b/src/main/java/ru/betterend/blocks/UmbrellaMossTallBlock.java @@ -1,16 +1,16 @@ package ru.betterend.blocks; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; -import ru.betterend.blocks.basis.DoublePlantBlock; +import ru.bclib.blocks.BaseDoublePlantBlock; import ru.betterend.registry.EndBlocks; -public class UmbrellaMossTallBlock extends DoublePlantBlock { +import java.util.Random; + +public class UmbrellaMossTallBlock extends BaseDoublePlantBlock { public UmbrellaMossTallBlock() { super(12); } diff --git a/src/main/java/ru/betterend/blocks/UmbrellaTreeClusterBlock.java b/src/main/java/ru/betterend/blocks/UmbrellaTreeClusterBlock.java index 48c55a8c..a8d3dcb0 100644 --- a/src/main/java/ru/betterend/blocks/UmbrellaTreeClusterBlock.java +++ b/src/main/java/ru/betterend/blocks/UmbrellaTreeClusterBlock.java @@ -17,12 +17,13 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.phys.BlockHitResult; +import ru.bclib.blocks.BaseBlock; +import ru.bclib.blocks.BlockProperties; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.BlockBase; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; -public class UmbrellaTreeClusterBlock extends BlockBase { +public class UmbrellaTreeClusterBlock extends BaseBlock { public static final BooleanProperty NATURAL = BlockProperties.NATURAL; public UmbrellaTreeClusterBlock() { diff --git a/src/main/java/ru/betterend/blocks/UmbrellaTreeClusterEmptyBlock.java b/src/main/java/ru/betterend/blocks/UmbrellaTreeClusterEmptyBlock.java index aa1ce7cf..3006feef 100644 --- a/src/main/java/ru/betterend/blocks/UmbrellaTreeClusterEmptyBlock.java +++ b/src/main/java/ru/betterend/blocks/UmbrellaTreeClusterEmptyBlock.java @@ -1,7 +1,5 @@ package ru.betterend.blocks; -import java.util.Random; - import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; @@ -11,12 +9,14 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.material.MaterialColor; +import ru.bclib.blocks.BaseBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.BlockBase; import ru.betterend.registry.EndBlocks; -public class UmbrellaTreeClusterEmptyBlock extends BlockBase { - public static final BooleanProperty NATURAL = BlockProperties.NATURAL; +import java.util.Random; + +public class UmbrellaTreeClusterEmptyBlock extends BaseBlock { + public static final BooleanProperty NATURAL = EndBlockProperties.NATURAL; public UmbrellaTreeClusterEmptyBlock() { super(FabricBlockSettings.copyOf(Blocks.NETHER_WART_BLOCK) diff --git a/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java b/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java index 03dfca16..a4b3a837 100644 --- a/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java +++ b/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java @@ -30,7 +30,7 @@ import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; public class UmbrellaTreeMembraneBlock extends SlimeBlock implements IRenderTypeable, BlockModelProvider { - public static final IntegerProperty COLOR = BlockProperties.COLOR; + public static final IntegerProperty COLOR = EndBlockProperties.COLOR; private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0); public UmbrellaTreeMembraneBlock() { diff --git a/src/main/java/ru/betterend/blocks/UmbrellaTreeSaplingBlock.java b/src/main/java/ru/betterend/blocks/UmbrellaTreeSaplingBlock.java index cc01c356..5eec2b40 100644 --- a/src/main/java/ru/betterend/blocks/UmbrellaTreeSaplingBlock.java +++ b/src/main/java/ru/betterend/blocks/UmbrellaTreeSaplingBlock.java @@ -4,8 +4,8 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.feature.Feature; -import ru.betterend.blocks.basis.FeatureSaplingBlock; -import ru.betterend.client.render.ERenderLayer; +import ru.bclib.blocks.FeatureSaplingBlock; +import ru.bclib.client.render.ERenderLayer; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; diff --git a/src/main/java/ru/betterend/blocks/basis/AttachedBlock.java b/src/main/java/ru/betterend/blocks/basis/AttachedBlock.java deleted file mode 100644 index 6a111b22..00000000 --- a/src/main/java/ru/betterend/blocks/basis/AttachedBlock.java +++ /dev/null @@ -1,76 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.tags.BlockTags; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; -import ru.bclib.util.BlocksHelper; - -public abstract class AttachedBlock extends BlockBaseNotFull { - public static final DirectionProperty FACING = BlockStateProperties.FACING; - - public AttachedBlock(Properties settings) { - super(settings); - this.registerDefaultState(this.defaultBlockState().setValue(FACING, Direction.UP)); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { - stateManager.add(FACING); - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext ctx) { - BlockState blockState = this.defaultBlockState(); - LevelReader worldView = ctx.getLevel(); - BlockPos blockPos = ctx.getClickedPos(); - Direction[] directions = ctx.getNearestLookingDirections(); - for (int i = 0; i < directions.length; ++i) { - Direction direction = directions[i]; - Direction direction2 = direction.getOpposite(); - blockState = (BlockState) blockState.setValue(FACING, direction2); - if (blockState.canSurvive(worldView, blockPos)) { - return blockState; - } - } - return null; - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - Direction direction = (Direction) state.getValue(FACING); - BlockPos blockPos = pos.relative(direction.getOpposite()); - return canSupportCenter(world, blockPos, direction) || world.getBlockState(blockPos).is(BlockTags.LEAVES); - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (!canSurvive(state, world, pos)) { - return Blocks.AIR.defaultBlockState(); - } - else { - return state; - } - } - - - @Override - public BlockState rotate(BlockState state, Rotation rotation) { - return BlocksHelper.rotateHorizontal(state, rotation, FACING); - } - - @Override - public BlockState mirror(BlockState state, Mirror mirror) { - return BlocksHelper.mirrorHorizontal(state, mirror, FACING); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/BarkBlock.java b/src/main/java/ru/betterend/blocks/basis/BarkBlock.java deleted file mode 100644 index 2257dcde..00000000 --- a/src/main/java/ru/betterend/blocks/basis/BarkBlock.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Optional; - -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import ru.betterend.client.models.Patterns; - -public class BarkBlock extends EndPillarBlock { - public BarkBlock(Properties settings) { - super(settings); - } - - @Override - protected Optional createBlockPattern(ResourceLocation blockId) { - blockId = Registry.BLOCK.getKey(this); - return Patterns.createJson(Patterns.BLOCK_BASE, getName(blockId), blockId.getPath()); - } - - private String getName(ResourceLocation blockId) { - String name = blockId.getPath(); - return name.replace("_bark", "_log_side"); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/BaseBlockWithEntity.java b/src/main/java/ru/betterend/blocks/basis/BaseBlockWithEntity.java deleted file mode 100644 index fffe742d..00000000 --- a/src/main/java/ru/betterend/blocks/basis/BaseBlockWithEntity.java +++ /dev/null @@ -1,27 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; - -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.BaseEntityBlock; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; - -public class BaseBlockWithEntity extends BaseEntityBlock { - public BaseBlockWithEntity(Properties settings) { - super(settings); - } - - @Override - public BlockEntity newBlockEntity(BlockGetter world) { - return null; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/BlockBase.java b/src/main/java/ru/betterend/blocks/basis/BlockBase.java deleted file mode 100644 index 1b6978d6..00000000 --- a/src/main/java/ru/betterend/blocks/basis/BlockBase.java +++ /dev/null @@ -1,28 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; - -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; - -public class BlockBase extends Block implements BlockModelProvider { - public BlockBase(Properties settings) { - super(settings); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public BlockModel getItemModel(ResourceLocation blockId) { - return getBlockModel(blockId, defaultBlockState()); - } -} \ No newline at end of file diff --git a/src/main/java/ru/betterend/blocks/basis/BlockBaseNotFull.java b/src/main/java/ru/betterend/blocks/basis/BlockBaseNotFull.java deleted file mode 100644 index 754b09b0..00000000 --- a/src/main/java/ru/betterend/blocks/basis/BlockBaseNotFull.java +++ /dev/null @@ -1,25 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.state.BlockState; - -public class BlockBaseNotFull extends BlockBase { - - public BlockBaseNotFull(Properties settings) { - super(settings); - } - - public boolean canSuffocate(BlockState state, BlockGetter view, BlockPos pos) { - return false; - } - - public boolean isSimpleFullBlock(BlockState state, BlockGetter view, BlockPos pos) { - return false; - } - - public boolean allowsSpawning(BlockState state, BlockGetter view, BlockPos pos, EntityType type) { - return false; - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/DoublePlantBlock.java b/src/main/java/ru/betterend/blocks/basis/DoublePlantBlock.java deleted file mode 100644 index bf66e266..00000000 --- a/src/main/java/ru/betterend/blocks/basis/DoublePlantBlock.java +++ /dev/null @@ -1,153 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Lists; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.BonemealableBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import net.minecraft.world.phys.Vec3; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.TagAPI; -import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class DoublePlantBlock extends BlockBaseNotFull implements IRenderTypeable, BonemealableBlock { - private static final VoxelShape SHAPE = Block.box(4, 2, 4, 12, 16, 12); - public static final IntegerProperty ROTATION = BlockProperties.ROTATION; - public static final BooleanProperty TOP = BooleanProperty.create("top"); - - public DoublePlantBlock() { - super(FabricBlockSettings.of(Material.PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .sound(SoundType.WET_GRASS) - .noCollission()); - this.registerDefaultState(this.stateDefinition.any().setValue(TOP, false)); - } - - public DoublePlantBlock(int light) { - super(FabricBlockSettings.of(Material.PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .sound(SoundType.WET_GRASS) - .lightLevel((state) -> state.getValue(TOP) ? light : 0) - .noCollission()); - this.registerDefaultState(this.stateDefinition.any().setValue(TOP, false)); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { - stateManager.add(TOP, ROTATION); - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - Vec3 vec3d = state.getOffset(view, pos); - return SHAPE.move(vec3d.x, vec3d.y, vec3d.z); - } - - @Override - public BlockBehaviour.OffsetType getOffsetType() { - return BlockBehaviour.OffsetType.XZ; - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - BlockState down = world.getBlockState(pos.below()); - BlockState up = world.getBlockState(pos.above()); - return state.getValue(TOP) ? down.getBlock() == this : isTerrain(down) && (up.getMaterial().isReplaceable()); - } - - public boolean canStayAt(BlockState state, LevelReader world, BlockPos pos) { - BlockState down = world.getBlockState(pos.below()); - BlockState up = world.getBlockState(pos.above()); - return state.getValue(TOP) ? down.getBlock() == this : isTerrain(down) && (up.getBlock() == this); - } - - protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.END_GROUND); - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (!canStayAt(state, world, pos)) { - return Blocks.AIR.defaultBlockState(); - } - else { - return state; - } - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - if (state.getValue(TOP)) { - return Lists.newArrayList(); - } - - ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { - return Lists.newArrayList(new ItemStack(this)); - } - else { - return Lists.newArrayList(); - } - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public boolean isValidBonemealTarget(BlockGetter world, BlockPos pos, BlockState state, boolean isClient) { - return true; - } - - @Override - public boolean isBonemealSuccess(Level world, Random random, BlockPos pos, BlockState state) { - return true; - } - - @Override - public void performBonemeal(ServerLevel world, Random random, BlockPos pos, BlockState state) { - ItemEntity item = new ItemEntity(world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, new ItemStack(this)); - world.addFreshEntity(item); - } - - @Override - public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) { - int rot = world.random.nextInt(4); - BlockState bs = this.defaultBlockState().setValue(ROTATION, rot); - BlocksHelper.setWithoutUpdate(world, pos, bs); - BlocksHelper.setWithoutUpdate(world, pos.above(), bs.setValue(TOP, true)); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java b/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java index 0b31d849..70208221 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java @@ -1,18 +1,84 @@ package ru.betterend.blocks.basis; +import net.minecraft.world.level.block.AnvilBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.level.material.MaterialColor; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.bclib.blocks.BaseAnvilBlock; public class EndAnvilBlock extends BaseAnvilBlock { protected final int level; + protected IntegerProperty durability; + protected int maxDamage; public EndAnvilBlock(MaterialColor color, int level) { super(color); this.level = level; } + + public int getDurability(BlockState blockState) { + Block anvilBlock = blockState.getBlock(); + if (anvilBlock instanceof EndAnvilBlock) { + blockState.getValue(durability); + } + return 0; + } + + public IntegerProperty getDurability() { + if (durability == null) { + this.maxDamage = 5; + this.durability = IntegerProperty.create("durability", 0, maxDamage); + } + return durability; + } + + public int getMaxDamage() { + return maxDamage; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + super.createBlockStateDefinition(builder); + builder.add(getDurability()); + } public int getCraftingLevel() { return level; } + + public static BlockState applyDamage(BlockState blockState) { + Block anvilBlock = blockState.getBlock(); + if (anvilBlock instanceof EndAnvilBlock) { + EndAnvilBlock endAnvilBlock = (EndAnvilBlock) anvilBlock; + IntegerProperty durability = endAnvilBlock.getDurability(); + int damage = blockState.getValue(durability) + 1; + if (damage <= endAnvilBlock.getMaxDamage()) { + return blockState.setValue(durability, damage); + } + blockState = blockState.setValue(durability, 0); + } + return getDamagedState(blockState); + } + + private static BlockState getDamagedState(BlockState fallingState) { + Block anvilBlock = fallingState.getBlock(); + if (anvilBlock instanceof EndAnvilBlock) { + IntegerProperty destructionProperty = ((EndAnvilBlock) anvilBlock).getDestructionProperty(); + int destruction = fallingState.getValue(destructionProperty) + 1; + if (destructionProperty.getPossibleValues().contains(destruction)) { + try { + return fallingState.setValue(destructionProperty, destruction); + } catch (Exception ex) { + return null; + } + } + return null; + } + return AnvilBlock.damage(fallingState); + } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndBarrelBlock.java b/src/main/java/ru/betterend/blocks/basis/EndBarrelBlock.java deleted file mode 100644 index cdbc8994..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndBarrelBlock.java +++ /dev/null @@ -1,10 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.minecraft.world.level.block.Block; -import ru.bclib.blocks.BaseBarrelBlock; - -public class EndBarrelBlock extends BaseBarrelBlock { - public EndBarrelBlock(Block source) { - super(source); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndBlockStripableLogLog.java b/src/main/java/ru/betterend/blocks/basis/EndBlockStripableLogLog.java deleted file mode 100644 index 99d73b01..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndBlockStripableLogLog.java +++ /dev/null @@ -1,41 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.RotatedPillarBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.MaterialColor; -import net.minecraft.world.phys.BlockHitResult; - -public class EndBlockStripableLogLog extends EndPillarBlock { - private final Block striped; - - public EndBlockStripableLogLog(MaterialColor color, Block striped) { - super(FabricBlockSettings.copyOf(striped).materialColor(color)); - this.striped = striped; - } - - @Override - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (player.getMainHandItem().getItem().is(FabricToolTags.AXES)) { - world.playSound(player, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); - if (!world.isClientSide) { - world.setBlock(pos, striped.defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS)), 11); - if (player != null && !player.isCreative()) { - player.getMainHandItem().hurt(1, world.random, (ServerPlayer) player); - } - } - return InteractionResult.SUCCESS; - } - return InteractionResult.FAIL; - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndBookshelfBlock.java b/src/main/java/ru/betterend/blocks/basis/EndBookshelfBlock.java deleted file mode 100644 index e0abeef5..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndBookshelfBlock.java +++ /dev/null @@ -1,51 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; - -public class EndBookshelfBlock extends BlockBase { - public EndBookshelfBlock(Block source) { - super(FabricBlockSettings.copyOf(source)); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.isCorrectToolForDrops(state)) { - int silk = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool); - if (silk > 0) { - return Collections.singletonList(new ItemStack(this)); - } - } - return Collections.singletonList(new ItemStack(Items.BOOK, 3)); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - Optional pattern = Patterns.createJson(Patterns.BLOCK_BOOKSHELF, - getName(blockId), blockId.getPath()); - return ModelsHelper.fromPattern(pattern); - } - - private String getName(ResourceLocation blockId) { - String name = blockId.getPath(); - return name.replace("_bookshelf", ""); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndButtonBlock.java b/src/main/java/ru/betterend/blocks/basis/EndButtonBlock.java deleted file mode 100644 index 0933c2ee..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndButtonBlock.java +++ /dev/null @@ -1,79 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.ButtonBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.AttachFace; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; - -public abstract class EndButtonBlock extends ButtonBlock implements BlockModelProvider { - - private final Block parent; - - protected EndButtonBlock(Block parent, Properties properties, boolean sensitive) { - super(sensitive, properties); - this.parent = parent; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public BlockModel getItemModel(ResourceLocation blockId) { - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern = Patterns.createJson(Patterns.ITEM_BUTTON, parentId.getPath(), blockId.getPath()); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - ResourceLocation blockId = Registry.BLOCK.getKey(this); - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern = blockState.getValue(POWERED) ? - Patterns.createJson(Patterns.BLOCK_BUTTON_PRESSED, parentId.getPath(), blockId.getPath()) : - Patterns.createJson(Patterns.BLOCK_BUTTON, parentId.getPath(), blockId.getPath()); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - String powered = blockState.getValue(POWERED) ? "_powered" : ""; - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath() + powered); - registerBlockModel(stateId, modelId, blockState, modelCache); - AttachFace face = blockState.getValue(FACE); - boolean isCeiling = face == AttachFace.CEILING; - int x = 0, y = 0; - switch (face) { - case CEILING: x = 180; break; - case WALL: x = 90; break; - default: break; - } - switch (blockState.getValue(FACING)) { - case NORTH: if (isCeiling) { y = 180; } break; - case EAST: y = isCeiling ? 270 : 90; break; - case SOUTH: if(!isCeiling) { y = 180; } break; - case WEST: y = isCeiling ? 90 : 270; break; - default: break; - } - BlockModelRotation rotation = BlockModelRotation.by(x, y); - return ModelsHelper.createMultiVariant(modelId, rotation.getRotation(), face == AttachFace.WALL); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndChainBlock.java b/src/main/java/ru/betterend/blocks/basis/EndChainBlock.java deleted file mode 100644 index 57649929..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndChainBlock.java +++ /dev/null @@ -1,62 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.ChainBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.MaterialColor; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class EndChainBlock extends ChainBlock implements BlockModelProvider, IRenderTypeable { - public EndChainBlock(MaterialColor color) { - super(FabricBlockSettings.copyOf(Blocks.CHAIN).materialColor(color)); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public BlockModel getItemModel(ResourceLocation blockId) { - return ModelsHelper.createItemModel(blockId); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - String name = blockId.getPath(); - Optional pattern = Patterns.createJson(Patterns.BLOCK_CHAIN, name, name); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - Direction.Axis axis = blockState.getValue(AXIS); - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath()); - registerBlockModel(stateId, modelId, blockState, modelCache); - return ModelsHelper.createRotatedModel(modelId, axis); - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndChestBlock.java b/src/main/java/ru/betterend/blocks/basis/EndChestBlock.java deleted file mode 100644 index b505dc49..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndChestBlock.java +++ /dev/null @@ -1,10 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.minecraft.world.level.block.Block; -import ru.bclib.blocks.BaseChestBlock; - -public class EndChestBlock extends BaseChestBlock { - public EndChestBlock(Block source) { - super(source); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndComposterBlock.java b/src/main/java/ru/betterend/blocks/basis/EndComposterBlock.java deleted file mode 100644 index 706566a0..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndComposterBlock.java +++ /dev/null @@ -1,66 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.ComposterBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.bclib.client.models.ModelsHelper.MultiPartBuilder; -import ru.betterend.client.models.Patterns; - -public class EndComposterBlock extends ComposterBlock implements BlockModelProvider { - public EndComposterBlock(Block source) { - super(FabricBlockSettings.copyOf(source)); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this.asItem())); - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - Optional pattern = Patterns.createJson(Patterns.BLOCK_COMPOSTER, blockId.getPath()); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); - registerBlockModel(stateId, modelId, blockState, modelCache); - - MultiPartBuilder builder = MultiPartBuilder.create(stateDefinition); - LEVEL.getPossibleValues().forEach(level -> { - if (level > 0) { - ResourceLocation contentId; - if (level > 7) { - contentId = new ResourceLocation("block/composter_contents_ready"); - } else { - contentId = new ResourceLocation("block/composter_contents" + level); - } - builder.part(contentId).setCondition(state -> state.getValue(LEVEL).equals(level)).add(); - } - }); - builder.part(modelId).add(); - - return builder.build(); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndCraftingTableBlock.java b/src/main/java/ru/betterend/blocks/basis/EndCraftingTableBlock.java deleted file mode 100644 index 2ecf1f14..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndCraftingTableBlock.java +++ /dev/null @@ -1,54 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.CraftingTableBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; - -public class EndCraftingTableBlock extends CraftingTableBlock implements BlockModelProvider { - public EndCraftingTableBlock(Block source) { - super(FabricBlockSettings.copyOf(source)); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this.asItem())); - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - String blockName = blockId.getPath(); - Optional pattern = Patterns.createJson(Patterns.BLOCK_SIDED, new HashMap() { - private static final long serialVersionUID = 1L; - { - put("%particle%", blockName + "_front"); - put("%down%", blockName + "_bottom"); - put("%up%", blockName + "_top"); - put("%north%", blockName + "_front"); - put("%south%", blockName + "_side"); - put("%west%", blockName + "_front"); - put("%east%", blockName + "_side"); - } - }); - return ModelsHelper.fromPattern(pattern); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndCropBlock.java b/src/main/java/ru/betterend/blocks/basis/EndCropBlock.java deleted file mode 100644 index 983373a7..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndCropBlock.java +++ /dev/null @@ -1,122 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Lists; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.util.Mth; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.util.BlocksHelper; -import ru.bclib.util.MHelper; - -public class EndCropBlock extends EndPlantBlock { - private static final VoxelShape SHAPE = Block.box(2, 0, 2, 14, 14, 14); - public static final IntegerProperty AGE = IntegerProperty.create("age", 0, 3); - - private final Block[] terrain; - private final Item drop; - - public EndCropBlock(Item drop, Block... terrain) { - super(FabricBlockSettings.of(Material.PLANT) - .breakByTool(FabricToolTags.HOES) - .breakByHand(true) - .sound(SoundType.GRASS) - .randomTicks() - .noCollission()); - this.drop = drop; - this.terrain = terrain; - this.registerDefaultState(defaultBlockState().setValue(AGE, 0)); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { - stateManager.add(AGE); - } - - @Override - protected boolean isTerrain(BlockState state) { - for (Block block: terrain) { - if (state.is(block)) { - return true; - } - } - return false; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - if (state.getValue(AGE) < 3) { - return Collections.singletonList(new ItemStack(this)); - } - ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.isCorrectToolForDrops(state)) { - int enchantment = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, tool); - if (enchantment > 0) { - int countSeeds = MHelper.randRange(Mth.clamp(1 + enchantment, 1, 3), 3, MHelper.RANDOM); - int countDrops = MHelper.randRange(Mth.clamp(1 + enchantment, 1, 2), 2, MHelper.RANDOM); - return Lists.newArrayList(new ItemStack(this, countSeeds), new ItemStack(drop, countDrops)); - } - } - int countSeeds = MHelper.randRange(1, 3, MHelper.RANDOM); - int countDrops = MHelper.randRange(1, 2, MHelper.RANDOM); - return Lists.newArrayList(new ItemStack(this, countSeeds), new ItemStack(drop, countDrops)); - } - - @Override - public BlockBehaviour.OffsetType getOffsetType() { - return BlockBehaviour.OffsetType.NONE; - } - - @Override - public void performBonemeal(ServerLevel world, Random random, BlockPos pos, BlockState state) { - int age = state.getValue(AGE); - if (age < 3) { - BlocksHelper.setWithUpdate(world, pos, state.setValue(AGE, age + 1)); - } - } - - @Override - public boolean isValidBonemealTarget(BlockGetter world, BlockPos pos, BlockState state, boolean isClient) { - return state.getValue(AGE) < 3; - } - - @Override - public boolean isBonemealSuccess(Level world, Random random, BlockPos pos, BlockState state) { - return state.getValue(AGE) < 3; - } - - @Override - public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) { - super.tick(state, world, pos, random); - if (isBonemealSuccess(world, random, pos, state) && random.nextInt(8) == 0) { - performBonemeal(world, random, pos, state); - } - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - return SHAPE; - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndDoorBlock.java b/src/main/java/ru/betterend/blocks/basis/EndDoorBlock.java deleted file mode 100644 index 3cc60898..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndDoorBlock.java +++ /dev/null @@ -1,163 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.StringRepresentable; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.DoorBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.DoorHingeSide; -import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class EndDoorBlock extends DoorBlock implements IRenderTypeable, BlockModelProvider { - public EndDoorBlock(Block source) { - super(FabricBlockSettings.copyOf(source).strength(3F, 3F).noOcclusion()); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - if (state.getValue(HALF) == DoubleBlockHalf.LOWER) - return Collections.singletonList(new ItemStack(this.asItem())); - else - return Collections.emptyList(); - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - String blockName = resourceLocation.getPath(); - DoorType doorType = getDoorType(blockState); - Optional pattern = Patterns.createJson(Patterns.BLOCK_DOOR_BOTTOM, blockName, blockName); - switch (doorType) { - case TOP_HINGE: - pattern = Patterns.createJson(Patterns.BLOCK_DOOR_TOP_HINGE, blockName, blockName); - break; - case BOTTOM_HINGE: - pattern = Patterns.createJson(Patterns.BLOCK_DOOR_BOTTOM_HINGE, blockName, blockName); - break; - case TOP: - pattern = Patterns.createJson(Patterns.BLOCK_DOOR_TOP, blockName, blockName); - break; - default: - break; - } - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - Direction facing = blockState.getValue(FACING); - DoorType doorType = getDoorType(blockState); - boolean open = blockState.getValue(OPEN); - boolean hinge = doorType.isHinge(); - BlockModelRotation rotation = BlockModelRotation.X0_Y0; - switch (facing) { - case EAST: - if (hinge && open) { - rotation = BlockModelRotation.X0_Y90; - } - else if (open) { - rotation = BlockModelRotation.X0_Y270; - } - break; - case SOUTH: - if (!hinge && !open || hinge && !open) { - rotation = BlockModelRotation.X0_Y90; - } - else if (hinge) { - rotation = BlockModelRotation.X0_Y180; - } - break; - case WEST: - if (!hinge && !open || hinge && !open) { - rotation = BlockModelRotation.X0_Y180; - } - else if (hinge) { - rotation = BlockModelRotation.X0_Y270; - } - else { - rotation = BlockModelRotation.X0_Y90; - } - break; - case NORTH: - if (!hinge && !open || hinge && !open) { - rotation = BlockModelRotation.X0_Y270; - } - else if (!hinge) { - rotation = BlockModelRotation.X0_Y180; - } - break; - default: - break; - } - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + "_" + doorType); - registerBlockModel(stateId, modelId, blockState, modelCache); - return ModelsHelper.createMultiVariant(modelId, rotation.getRotation(), false); - } - - protected DoorType getDoorType(BlockState blockState) { - boolean isHinge = isHinge(blockState.getValue(HINGE), blockState.getValue(OPEN)); - switch (blockState.getValue(HALF)) { - case UPPER: { - return isHinge ? DoorType.TOP_HINGE : DoorType.TOP; - } - case LOWER: { - return isHinge ? DoorType.BOTTOM_HINGE : DoorType.BOTTOM; - } - } - return DoorType.BOTTOM; - } - - private boolean isHinge(DoorHingeSide hingeSide, boolean open) { - boolean isHinge = hingeSide == DoorHingeSide.RIGHT; - return isHinge && !open || !isHinge && open; - } - - protected enum DoorType implements StringRepresentable { - BOTTOM_HINGE("bottom_hinge"), TOP_HINGE("top_hinge"), BOTTOM("bottom"), TOP("top"); - - private final String name; - - DoorType(String name) { - this.name = name; - } - - public boolean isHinge() { - return this == BOTTOM_HINGE || - this == TOP_HINGE; - } - - @Override - public String toString() { - return getSerializedName(); - } - - @Override - public String getSerializedName() { - return name; - } - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndFenceBlock.java b/src/main/java/ru/betterend/blocks/basis/EndFenceBlock.java deleted file mode 100644 index 8bc83a2a..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndFenceBlock.java +++ /dev/null @@ -1,81 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.FenceBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.bclib.client.models.ModelsHelper.MultiPartBuilder; -import ru.betterend.client.models.Patterns; - -public class EndFenceBlock extends FenceBlock implements BlockModelProvider { - private final Block parent; - - public EndFenceBlock(Block source) { - super(FabricBlockSettings.copyOf(source).noOcclusion()); - this.parent = source; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public BlockModel getItemModel(ResourceLocation blockId) { - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern = Patterns.createJson(Patterns.ITEM_FENCE, parentId.getPath(), blockId.getPath()); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - String path = blockId.getPath(); - Optional pattern = Optional.empty(); - if (path.endsWith("_post")) { - pattern = Patterns.createJson(Patterns.BLOCK_FENCE_POST, parentId.getPath(), blockId.getPath()); - } - if (path.endsWith("_side")) { - pattern = Patterns.createJson(Patterns.BLOCK_FENCE_SIDE, parentId.getPath(), blockId.getPath()); - } - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - ResourceLocation postId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + "_post"); - ResourceLocation sideId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + "_side"); - registerBlockModel(postId, postId, blockState, modelCache); - registerBlockModel(sideId, sideId, blockState, modelCache); - - MultiPartBuilder builder = MultiPartBuilder.create(stateDefinition); - builder.part(sideId).setCondition(state -> state.getValue(NORTH)).setUVLock(true).add(); - builder.part(sideId).setCondition(state -> state.getValue(EAST)) - .setTransformation(BlockModelRotation.X0_Y90.getRotation()).setUVLock(true).add(); - builder.part(sideId).setCondition(state -> state.getValue(SOUTH)) - .setTransformation(BlockModelRotation.X0_Y180.getRotation()).setUVLock(true).add(); - builder.part(sideId).setCondition(state -> state.getValue(WEST)) - .setTransformation(BlockModelRotation.X0_Y270.getRotation()).setUVLock(true).add(); - builder.part(postId).add(); - - return builder.build(); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndFurnaceBlock.java b/src/main/java/ru/betterend/blocks/basis/EndFurnaceBlock.java deleted file mode 100644 index dd1c0c3f..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndFurnaceBlock.java +++ /dev/null @@ -1,10 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.minecraft.world.level.block.Block; -import ru.bclib.blocks.BaseFurnaceBlock; - -public class EndFurnaceBlock extends BaseFurnaceBlock { - public EndFurnaceBlock(Block source) { - super(source); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndGateBlock.java b/src/main/java/ru/betterend/blocks/basis/EndGateBlock.java deleted file mode 100644 index ba33f45a..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndGateBlock.java +++ /dev/null @@ -1,68 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.FenceGateBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; - -public class EndGateBlock extends FenceGateBlock implements BlockModelProvider { - private final Block parent; - - public EndGateBlock(Block source) { - super(FabricBlockSettings.copyOf(source).noOcclusion()); - this.parent = source; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - boolean inWall = blockState.getValue(IN_WALL); - boolean isOpen = blockState.getValue(OPEN); - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern; - if (inWall) { - pattern = isOpen ? Patterns.createJson(Patterns.BLOCK_GATE_OPEN_WALL, parentId.getPath(), blockId.getPath()) : - Patterns.createJson(Patterns.BLOCK_GATE_CLOSED_WALL, parentId.getPath(), blockId.getPath()); - } else { - pattern = isOpen ? Patterns.createJson(Patterns.BLOCK_GATE_OPEN, parentId.getPath(), blockId.getPath()) : - Patterns.createJson(Patterns.BLOCK_GATE_CLOSED, parentId.getPath(), blockId.getPath()); - } - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - boolean inWall = blockState.getValue(IN_WALL); - boolean isOpen = blockState.getValue(OPEN); - String state = "" + (inWall ? "_wall" : "") + (isOpen ? "_open" : "_closed"); - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + state); - registerBlockModel(stateId, modelId, blockState, modelCache); - return ModelsHelper.createFacingModel(modelId, blockState.getValue(FACING), true, false); - } -} \ No newline at end of file diff --git a/src/main/java/ru/betterend/blocks/basis/EndLadderBlock.java b/src/main/java/ru/betterend/blocks/basis/EndLadderBlock.java deleted file mode 100644 index ba0ad49b..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndLadderBlock.java +++ /dev/null @@ -1,162 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.bclib.util.BlocksHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class EndLadderBlock extends BlockBaseNotFull implements IRenderTypeable, BlockModelProvider { - public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; - public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; - protected static final VoxelShape EAST_SHAPE = Block.box(0.0D, 0.0D, 0.0D, 3.0D, 16.0D, 16.0D); - protected static final VoxelShape WEST_SHAPE = Block.box(13.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D); - protected static final VoxelShape SOUTH_SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 16.0D, 3.0D); - protected static final VoxelShape NORTH_SHAPE = Block.box(0.0D, 0.0D, 13.0D, 16.0D, 16.0D, 16.0D); - - public EndLadderBlock(Block block) { - super(FabricBlockSettings.copyOf(block).noOcclusion()); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { - stateManager.add(FACING); - stateManager.add(WATERLOGGED); - } - - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - switch (state.getValue(FACING)) { - case SOUTH: - return SOUTH_SHAPE; - case WEST: - return WEST_SHAPE; - case EAST: - return EAST_SHAPE; - default: - return NORTH_SHAPE; - } - } - - private boolean canPlaceOn(BlockGetter world, BlockPos pos, Direction side) { - BlockState blockState = world.getBlockState(pos); - return !blockState.isSignalSource() && blockState.isFaceSturdy(world, pos, side); - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - Direction direction = (Direction) state.getValue(FACING); - return this.canPlaceOn(world, pos.relative(direction.getOpposite()), direction); - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, - LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (facing.getOpposite() == state.getValue(FACING) && !state.canSurvive(world, pos)) { - return Blocks.AIR.defaultBlockState(); - } else { - if ((Boolean) state.getValue(WATERLOGGED)) { - world.getLiquidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); - } - - return super.updateShape(state, facing, neighborState, world, pos, neighborPos); - } - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext ctx) { - BlockState blockState2; - if (!ctx.replacingClickedOnBlock()) { - blockState2 = ctx.getLevel().getBlockState(ctx.getClickedPos().relative(ctx.getClickedFace().getOpposite())); - if (blockState2.getBlock() == this && blockState2.getValue(FACING) == ctx.getClickedFace()) { - return null; - } - } - - blockState2 = this.defaultBlockState(); - LevelReader worldView = ctx.getLevel(); - BlockPos blockPos = ctx.getClickedPos(); - FluidState fluidState = ctx.getLevel().getFluidState(ctx.getClickedPos()); - Direction[] var6 = ctx.getNearestLookingDirections(); - int var7 = var6.length; - - for (int var8 = 0; var8 < var7; ++var8) { - Direction direction = var6[var8]; - if (direction.getAxis().isHorizontal()) { - blockState2 = (BlockState) blockState2.setValue(FACING, direction.getOpposite()); - if (blockState2.canSurvive(worldView, blockPos)) { - return (BlockState) blockState2.setValue(WATERLOGGED, fluidState.getType() == Fluids.WATER); - } - } - } - - return null; - } - - @Override - public BlockState rotate(BlockState state, Rotation rotation) { - return BlocksHelper.rotateHorizontal(state, rotation, FACING); - } - - @Override - public BlockState mirror(BlockState state, Mirror mirror) { - return BlocksHelper.mirrorHorizontal(state, mirror, FACING); - } - - @Override - public FluidState getFluidState(BlockState state) { - return (Boolean) state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public BlockModel getItemModel(ResourceLocation blockId) { - return ModelsHelper.createBlockItem(blockId); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - Optional pattern = Patterns.createJson(Patterns.BLOCK_LADDER, blockId.getPath()); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); - registerBlockModel(stateId, modelId, blockState, modelCache); - return ModelsHelper.createFacingModel(modelId, blockState.getValue(FACING), false, true); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndLanternBlock.java b/src/main/java/ru/betterend/blocks/basis/EndLanternBlock.java index de18545c..f66fa6dc 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndLanternBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndLanternBlock.java @@ -22,10 +22,12 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; +import ru.bclib.blocks.BaseBlockNotFull; +import ru.bclib.blocks.BlockProperties; import ru.bclib.client.models.ModelsHelper; -import ru.betterend.blocks.BlockProperties; -public class EndLanternBlock extends BlockBaseNotFull implements SimpleWaterloggedBlock, LiquidBlockContainer { +@SuppressWarnings("deprecation") +public class EndLanternBlock extends BaseBlockNotFull implements SimpleWaterloggedBlock, LiquidBlockContainer { public static final BooleanProperty IS_FLOOR = BlockProperties.IS_FLOOR; public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; diff --git a/src/main/java/ru/betterend/blocks/basis/EndLeavesBlock.java b/src/main/java/ru/betterend/blocks/basis/EndLeavesBlock.java deleted file mode 100644 index ef2b5c0e..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndLeavesBlock.java +++ /dev/null @@ -1,79 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; - -import com.google.common.collect.Lists; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.LeavesBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.MaterialColor; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.util.MHelper; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class EndLeavesBlock extends LeavesBlock implements BlockModelProvider, IRenderTypeable { - private final Block sapling; - - public EndLeavesBlock(Block sapling, MaterialColor color) { - super(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES) - .materialColor(color) - .breakByTool(FabricToolTags.HOES) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .isValidSpawn((state, world, pos, type) -> false) - .isSuffocating((state, world, pos) -> false) - .isViewBlocking((state, world, pos) -> false)); - this.sapling = sapling; - } - - public EndLeavesBlock(Block sapling, MaterialColor color, int light) { - super(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES) - .materialColor(color) - .luminance(light) - .breakByTool(FabricToolTags.HOES) - .breakByTool(FabricToolTags.SHEARS) - .isValidSpawn((state, world, pos, type) -> false) - .isSuffocating((state, world, pos) -> false) - .isViewBlocking((state, world, pos) -> false)); - this.sapling = sapling; - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null) { - if (tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { - return Collections.singletonList(new ItemStack(this)); - } - int fortune = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, tool); - if (MHelper.RANDOM.nextInt(16) <= fortune) { - return Lists.newArrayList(new ItemStack(sapling)); - } - return Lists.newArrayList(); - } - return MHelper.RANDOM.nextInt(16) == 0 ? Lists.newArrayList(new ItemStack(sapling)) : Lists.newArrayList(); - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndMetalPaneBlock.java b/src/main/java/ru/betterend/blocks/basis/EndMetalPaneBlock.java deleted file mode 100644 index 72d233cf..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndMetalPaneBlock.java +++ /dev/null @@ -1,108 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Direction; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.IronBarsBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class EndMetalPaneBlock extends IronBarsBlock implements BlockModelProvider, IRenderTypeable { - public EndMetalPaneBlock(Block source) { - super(FabricBlockSettings.copyOf(source).strength(5.0F, 6.0F).noOcclusion()); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - public Optional getModelString(String block) { - ResourceLocation blockId = Registry.BLOCK.getKey(this); - if (block.contains("item")) { - return Patterns.createJson(Patterns.ITEM_BLOCK, blockId.getPath()); - } - if (block.contains("post")) { - return Patterns.createJson(Patterns.BLOCK_BARS_POST, blockId.getPath(), blockId.getPath()); - } - else { - return Patterns.createJson(Patterns.BLOCK_BARS_SIDE, blockId.getPath(), blockId.getPath()); - } - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return ModelsHelper.createBlockItem(resourceLocation); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - ResourceLocation thisId = Registry.BLOCK.getKey(this); - String path = blockId.getPath(); - Optional pattern = Optional.empty(); - if (path.endsWith("_post")) { - pattern = Patterns.createJson(Patterns.BLOCK_BARS_POST, thisId.getPath(), thisId.getPath()); - } - if (path.endsWith("_side")) { - pattern = Patterns.createJson(Patterns.BLOCK_BARS_SIDE, thisId.getPath(), thisId.getPath()); - } - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - ResourceLocation postId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + "_post"); - ResourceLocation sideId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + "_side"); - registerBlockModel(postId, postId, blockState, modelCache); - registerBlockModel(sideId, sideId, blockState, modelCache); - - ModelsHelper.MultiPartBuilder builder = ModelsHelper.MultiPartBuilder.create(stateDefinition); - builder.part(postId).setCondition(state -> - !state.getValue(NORTH) && !state.getValue(EAST) && - !state.getValue(SOUTH) && !state.getValue(WEST)).add(); - builder.part(sideId).setCondition(state -> state.getValue(NORTH)).setUVLock(true).add(); - builder.part(sideId).setCondition(state -> state.getValue(EAST)) - .setTransformation(BlockModelRotation.X0_Y90.getRotation()).setUVLock(true).add(); - builder.part(sideId).setCondition(state -> state.getValue(SOUTH)) - .setTransformation(BlockModelRotation.X0_Y180.getRotation()).setUVLock(true).add(); - builder.part(sideId).setCondition(state -> state.getValue(WEST)) - .setTransformation(BlockModelRotation.X0_Y270.getRotation()).setUVLock(true).add(); - - return builder.build(); - } - - @Environment(EnvType.CLIENT) - public boolean skipRendering(BlockState state, BlockState stateFrom, Direction direction) { - if (direction.getAxis().isVertical() && stateFrom.getBlock().is(this) && !stateFrom.equals(state)) { - return false; - } - return super.skipRendering(state, stateFrom, direction); - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndOreBlock.java b/src/main/java/ru/betterend/blocks/basis/EndOreBlock.java deleted file mode 100644 index 0d2c4e3a..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndOreBlock.java +++ /dev/null @@ -1,76 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Random; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.block.OreBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.util.MHelper; - -public class EndOreBlock extends OreBlock implements BlockModelProvider { - private final Item dropItem; - private final int minCount; - private final int maxCount; - private final int experience; - - public EndOreBlock(Item drop, int minCount, int maxCount, int experience) { - super(FabricBlockSettings.of(Material.STONE, MaterialColor.SAND) - .hardness(3F) - .resistance(9F) - .requiresCorrectToolForDrops() - .sound(SoundType.STONE)); - this.dropItem = drop; - this.minCount = minCount; - this.maxCount = maxCount; - this.experience = experience; - } - - @Override - protected int xpOnDrop(Random random) { - return this.experience > 0 ? random.nextInt(experience) + 1 : 0; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.isCorrectToolForDrops(state)) { - if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { - return Collections.singletonList(new ItemStack(this)); - } - int count = 0; - int enchantment = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, tool); - if (enchantment > 0) { - int min = Mth.clamp(minCount + enchantment, minCount, maxCount); - int max = maxCount + (enchantment / Enchantments.BLOCK_FORTUNE.getMaxLevel()); - if (min == max) { - return Collections.singletonList(new ItemStack(dropItem, max)); - } - count = MHelper.randRange(min, max, MHelper.RANDOM); - } else { - count = MHelper.randRange(minCount, maxCount, MHelper.RANDOM); - } - return Collections.singletonList(new ItemStack(dropItem, count)); - } - return Collections.emptyList(); - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndPathBlock.java b/src/main/java/ru/betterend/blocks/basis/EndPathBlock.java deleted file mode 100644 index cab30f36..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndPathBlock.java +++ /dev/null @@ -1,11 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.minecraft.world.level.block.Block; -import ru.bclib.blocks.BasePathBlock; - -public class EndPathBlock extends BasePathBlock { - - public EndPathBlock(Block source) { - super(source); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndPillarBlock.java b/src/main/java/ru/betterend/blocks/basis/EndPillarBlock.java deleted file mode 100644 index 24b2a1ca..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndPillarBlock.java +++ /dev/null @@ -1,58 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.RotatedPillarBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; - -public class EndPillarBlock extends RotatedPillarBlock implements BlockModelProvider { - public EndPillarBlock(Properties settings) { - super(settings); - } - - public EndPillarBlock(Block block) { - super(FabricBlockSettings.copyOf(block)); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public BlockModel getItemModel(ResourceLocation blockId) { - return getBlockModel(blockId, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - Optional pattern = createBlockPattern(blockId); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); - registerBlockModel(stateId, modelId, blockState, modelCache); - return ModelsHelper.createRotatedModel(modelId, blockState.getValue(AXIS)); - } - - protected Optional createBlockPattern(ResourceLocation blockId) { - return Patterns.createBlockPillar(blockId.getPath()); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndPlantBlock.java b/src/main/java/ru/betterend/blocks/basis/EndPlantBlock.java index 9a6112fc..9219a55f 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndPlantBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndPlantBlock.java @@ -1,131 +1,33 @@ package ru.betterend.blocks.basis; -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Lists; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.BonemealableBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import net.minecraft.world.phys.Vec3; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; import ru.bclib.api.TagAPI; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; +import ru.bclib.blocks.BasePlantBlock; + +public class EndPlantBlock extends BasePlantBlock { -public class EndPlantBlock extends BlockBaseNotFull implements IRenderTypeable, BonemealableBlock { - private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); - public EndPlantBlock() { this(false); } - + public EndPlantBlock(int light) { this(false, light); } - + public EndPlantBlock(boolean replaceable) { - super(FabricBlockSettings.of(replaceable ? Material.REPLACEABLE_PLANT : Material.PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .sound(SoundType.GRASS) - .noCollission()); + super(replaceable); } - + public EndPlantBlock(boolean replaceable, int light) { - super(FabricBlockSettings.of(replaceable ? Material.REPLACEABLE_PLANT : Material.PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .luminance(light) - .sound(SoundType.GRASS) - .noCollission()); + super(replaceable, light); } - + public EndPlantBlock(Properties settings) { super(settings); } @Override - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - Vec3 vec3d = state.getOffset(view, pos); - return SHAPE.move(vec3d.x, vec3d.y, vec3d.z); - } - - @Override - public BlockBehaviour.OffsetType getOffsetType() { - return BlockBehaviour.OffsetType.XZ; - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - BlockState down = world.getBlockState(pos.below()); - return isTerrain(down); - } - protected boolean isTerrain(BlockState state) { return state.is(TagAPI.END_GROUND); } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (!canSurvive(state, world, pos)) { - return Blocks.AIR.defaultBlockState(); - } - else { - return state; - } - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { - return Lists.newArrayList(new ItemStack(this)); - } - else { - return Lists.newArrayList(); - } - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public boolean isValidBonemealTarget(BlockGetter world, BlockPos pos, BlockState state, boolean isClient) { - return true; - } - - @Override - public boolean isBonemealSuccess(Level world, Random random, BlockPos pos, BlockState state) { - return true; - } - - @Override - public void performBonemeal(ServerLevel world, Random random, BlockPos pos, BlockState state) { - ItemEntity item = new ItemEntity(world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, new ItemStack(this)); - world.addFreshEntity(item); - } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndPlantWithAgeBlock.java b/src/main/java/ru/betterend/blocks/basis/EndPlantWithAgeBlock.java index ed6bc623..c3d2045b 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndPlantWithAgeBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndPlantWithAgeBlock.java @@ -1,65 +1,19 @@ package ru.betterend.blocks.basis; -import java.util.Random; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.WorldGenLevel; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.BlockProperties; +import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BasePlantWithAgeBlock; + +public abstract class EndPlantWithAgeBlock extends BasePlantWithAgeBlock { + + public EndPlantWithAgeBlock() {} -public abstract class EndPlantWithAgeBlock extends EndPlantBlock { - public static final IntegerProperty AGE = BlockProperties.AGE; - - public EndPlantWithAgeBlock() { - this(FabricBlockSettings.of(Material.PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .sound(SoundType.GRASS) - .randomTicks() - .noCollission()); - } - public EndPlantWithAgeBlock(Properties settings) { super(settings); } - + @Override - protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { - stateManager.add(AGE); - } - - public abstract void growAdult(WorldGenLevel world, Random random, BlockPos pos); - - @Override - public void performBonemeal(ServerLevel world, Random random, BlockPos pos, BlockState state) { - int age = state.getValue(AGE); - if (age < 3) { - world.setBlockAndUpdate(pos, state.setValue(AGE, age + 1)); - } - else { - growAdult(world, random, pos); - } - } - - @Override - public boolean isBonemealSuccess(Level world, Random random, BlockPos pos, BlockState state) { - return true; - } - - @Override - public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) { - super.tick(state, world, pos, random); - if (random.nextInt(8) == 0) { - performBonemeal(world, random, pos, state); - } + protected boolean isTerrain(BlockState state) { + return state.is(TagAPI.END_GROUND); } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndPlateBlock.java b/src/main/java/ru/betterend/blocks/basis/EndPlateBlock.java deleted file mode 100644 index f29dbc95..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndPlateBlock.java +++ /dev/null @@ -1,62 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.PressurePlateBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; - -public class EndPlateBlock extends PressurePlateBlock implements BlockModelProvider { - private final Block parent; - - public EndPlateBlock(Sensitivity rule, Block source) { - super(rule, FabricBlockSettings.copyOf(source).noCollission().noOcclusion().strength(0.5F)); - this.parent = source; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern; - if (blockState.getValue(POWERED)) { - pattern = Patterns.createJson(Patterns.BLOCK_PLATE_DOWN, parentId.getPath(), resourceLocation.getPath()); - } else { - pattern = Patterns.createJson(Patterns.BLOCK_PLATE_UP, parentId.getPath(), resourceLocation.getPath()); - } - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - String state = blockState.getValue(POWERED) ? "_down" : "_up"; - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + state); - registerBlockModel(stateId, modelId, blockState, modelCache); - return ModelsHelper.createBlockSimple(modelId); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndSignBlock.java b/src/main/java/ru/betterend/blocks/basis/EndSignBlock.java deleted file mode 100644 index fcd6c2c9..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndSignBlock.java +++ /dev/null @@ -1,10 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.minecraft.world.level.block.Block; -import ru.bclib.blocks.BaseSignBlock; - -public class EndSignBlock extends BaseSignBlock { - public EndSignBlock(Block source) { - super(source); - } -} \ No newline at end of file diff --git a/src/main/java/ru/betterend/blocks/basis/EndSlabBlock.java b/src/main/java/ru/betterend/blocks/basis/EndSlabBlock.java deleted file mode 100644 index b6ebc0fa..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndSlabBlock.java +++ /dev/null @@ -1,62 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.SlabBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.SlabType; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; - -public class EndSlabBlock extends SlabBlock implements BlockModelProvider { - private final Block parent; - - public EndSlabBlock(Block source) { - super(FabricBlockSettings.copyOf(source)); - this.parent = source; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern = Patterns.createJson(Patterns.BLOCK_SLAB, parentId.getPath(), blockId.getPath()); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - SlabType type = blockState.getValue(TYPE); - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + "_" + type); - registerBlockModel(stateId, modelId, blockState, modelCache); - if (type == SlabType.TOP) { - return ModelsHelper.createMultiVariant(modelId, BlockModelRotation.X180_Y0.getRotation(), true); - } - return ModelsHelper.createBlockSimple(modelId); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndStairsBlock.java b/src/main/java/ru/betterend/blocks/basis/EndStairsBlock.java deleted file mode 100644 index e5f94914..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndStairsBlock.java +++ /dev/null @@ -1,108 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.StairBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.Half; -import net.minecraft.world.level.block.state.properties.StairsShape; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; - -public class EndStairsBlock extends StairBlock implements BlockModelProvider { - - private final Block parent; - - public EndStairsBlock(Block source) { - super(source.defaultBlockState(), FabricBlockSettings.copyOf(source)); - this.parent = source; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern = Optional.empty(); - switch (blockState.getValue(SHAPE)) { - case STRAIGHT: - pattern = Patterns.createJson(Patterns.BLOCK_STAIR, parentId.getPath(), blockId.getPath()); - break; - case INNER_LEFT: - case INNER_RIGHT: - pattern = Patterns.createJson(Patterns.BLOCK_STAIR_INNER, parentId.getPath(), blockId.getPath()); - break; - case OUTER_LEFT: - case OUTER_RIGHT: - pattern = Patterns.createJson(Patterns.BLOCK_STAIR_OUTER, parentId.getPath(), blockId.getPath()); - break; - } - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - String state = ""; - StairsShape shape = blockState.getValue(SHAPE); - switch (shape) { - case INNER_LEFT: - case INNER_RIGHT: state = "_inner"; break; - case OUTER_LEFT: - case OUTER_RIGHT: state = "_outer"; break; - default: break; - } - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath() + state); - registerBlockModel(stateId, modelId, blockState, modelCache); - - boolean isTop = blockState.getValue(HALF) == Half.TOP; - boolean isLeft = shape == StairsShape.INNER_LEFT || - shape == StairsShape.OUTER_LEFT; - boolean isRight = shape == StairsShape.INNER_RIGHT || - shape == StairsShape.OUTER_RIGHT; - int y = 0; - int x = isTop ? 180 : 0; - switch (blockState.getValue(FACING)) { - case NORTH: - if (isTop && !isRight) y = 270; - else if (!isTop) y = isLeft ? 180 : 270; - break; - case EAST: - if (isTop && isRight) y = 90; - else if (!isTop && isLeft) y = 270; - break; - case SOUTH: - if (isTop) y = isRight ? 180 : 90; - else if (!isLeft) y = 90; - break; - case WEST: - y = (isTop && isRight) ? 270 : (!isTop && isLeft) ? 90 : 180; - break; - default: break; - } - BlockModelRotation rotation = BlockModelRotation.by(x, y); - return ModelsHelper.createMultiVariant(modelId, rotation.getRotation(), true); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndStoneButtonBlock.java b/src/main/java/ru/betterend/blocks/basis/EndStoneButtonBlock.java deleted file mode 100644 index 25cd52d1..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndStoneButtonBlock.java +++ /dev/null @@ -1,18 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.level.block.Block; - -public class EndStoneButtonBlock extends EndButtonBlock { - - public EndStoneButtonBlock(Block source) { - super(source, FabricBlockSettings.copyOf(source).noOcclusion(), false); - } - - @Override - protected SoundEvent getSound(boolean clicked) { - return clicked ? SoundEvents.STONE_BUTTON_CLICK_ON : SoundEvents.STONE_BUTTON_CLICK_OFF; - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndStonePlateBlock.java b/src/main/java/ru/betterend/blocks/basis/EndStonePlateBlock.java deleted file mode 100644 index 55ce2993..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndStonePlateBlock.java +++ /dev/null @@ -1,9 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.minecraft.world.level.block.Block; - -public class EndStonePlateBlock extends EndPlateBlock { - public EndStonePlateBlock(Block source) { - super(Sensitivity.MOBS, source); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndTrapdoorBlock.java b/src/main/java/ru/betterend/blocks/basis/EndTrapdoorBlock.java deleted file mode 100644 index 3df52db8..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndTrapdoorBlock.java +++ /dev/null @@ -1,87 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.TrapDoorBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.Half; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class EndTrapdoorBlock extends TrapDoorBlock implements IRenderTypeable, BlockModelProvider { - public EndTrapdoorBlock(Block source) { - super(FabricBlockSettings.copyOf(source).strength(3.0F, 3.0F).noOcclusion()); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - String name = resourceLocation.getPath(); - Optional pattern = Patterns.createJson(Patterns.BLOCK_TRAPDOOR, new HashMap() { - private static final long serialVersionUID = 1L; - { - put("%block%", name); - put("%texture%", name.replace("trapdoor", "door_side")); - } - }); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); - registerBlockModel(stateId, modelId, blockState, modelCache); - boolean isTop = blockState.getValue(HALF) == Half.TOP; - boolean isOpen = blockState.getValue(OPEN); - int y = 0; - int x = (isTop && isOpen) ? 270 : isTop ? 180 : isOpen ? 90 : 0; - switch (blockState.getValue(FACING)) { - case EAST: - y = (isTop && isOpen) ? 270 : 90; - break; - case NORTH: - if (isTop && isOpen) y = 180; - break; - case SOUTH: - y = (isTop && isOpen) ? 0 : 180; - break; - case WEST: - y = (isTop && isOpen) ? 90 : 270; - break; - default: break; - } - BlockModelRotation rotation = BlockModelRotation.by(x, y); - return ModelsHelper.createMultiVariant(modelId, rotation.getRotation(), false); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndTripleTerrain.java b/src/main/java/ru/betterend/blocks/basis/EndTripleTerrain.java new file mode 100644 index 00000000..f47bbe88 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/basis/EndTripleTerrain.java @@ -0,0 +1,12 @@ +package ru.betterend.blocks.basis; + +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.material.MaterialColor; +import ru.bclib.blocks.TripleTerrainBlock; + +public class EndTripleTerrain extends TripleTerrainBlock { + + public EndTripleTerrain(MaterialColor color) { + super(Blocks.END_STONE, color); + } +} diff --git a/src/main/java/ru/betterend/blocks/basis/EndUnderwaterPlantBlock.java b/src/main/java/ru/betterend/blocks/basis/EndUnderwaterPlantBlock.java new file mode 100644 index 00000000..747095d2 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/basis/EndUnderwaterPlantBlock.java @@ -0,0 +1,23 @@ +package ru.betterend.blocks.basis; + +import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.api.TagAPI; +import ru.bclib.blocks.UnderwaterPlantBlock; + +public class EndUnderwaterPlantBlock extends UnderwaterPlantBlock { + + public EndUnderwaterPlantBlock() {} + + public EndUnderwaterPlantBlock(int light) { + super(light); + } + + public EndUnderwaterPlantBlock(Properties settings) { + super(settings); + } + + @Override + protected boolean isTerrain(BlockState state) { + return state.is(TagAPI.END_GROUND); + } +} diff --git a/src/main/java/ru/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java b/src/main/java/ru/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java index 656e7898..59bb034d 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndUnderwaterWallPlantBlock.java @@ -1,59 +1,23 @@ package ru.betterend.blocks.basis; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.LiquidBlockContainer; -import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.level.material.Material; +import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BaseUnderwaterWallPlantBlock; + +public class EndUnderwaterWallPlantBlock extends BaseUnderwaterWallPlantBlock { + + public EndUnderwaterWallPlantBlock() {} -public class EndUnderwaterWallPlantBlock extends EndWallPlantBlock implements LiquidBlockContainer { - - public EndUnderwaterWallPlantBlock() { - super(FabricBlockSettings.of(Material.WATER_PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .sound(SoundType.WET_GRASS) - .noCollission()); - } - public EndUnderwaterWallPlantBlock(int light) { - super(FabricBlockSettings.of(Material.WATER_PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .luminance(light) - .sound(SoundType.WET_GRASS) - .noCollission()); + super(light); } - + public EndUnderwaterWallPlantBlock(Properties settings) { super(settings); } - - @Override - public boolean canPlaceLiquid(BlockGetter world, BlockPos pos, BlockState state, Fluid fluid) { - return false; - } @Override - public boolean placeLiquid(LevelAccessor world, BlockPos pos, BlockState state, FluidState fluidState) { - return false; - } - - @Override - public FluidState getFluidState(BlockState state) { - return Fluids.WATER.getSource(false); - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getFluidState(pos).getType() == Fluids.WATER && super.canSurvive(state, world, pos); + protected boolean isTerrain(BlockState state) { + return state.is(TagAPI.END_GROUND); } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndWallBlock.java b/src/main/java/ru/betterend/blocks/basis/EndWallBlock.java deleted file mode 100644 index f7189e6f..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndWallBlock.java +++ /dev/null @@ -1,11 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.minecraft.world.level.block.Block; -import ru.bclib.blocks.BaseWallBlock; - -public class EndWallBlock extends BaseWallBlock { - - public EndWallBlock(Block source) { - super(source); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndWallMushroom.java b/src/main/java/ru/betterend/blocks/basis/EndWallMushroom.java new file mode 100644 index 00000000..fed2b359 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/basis/EndWallMushroom.java @@ -0,0 +1,17 @@ +package ru.betterend.blocks.basis; + +import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.api.TagAPI; +import ru.bclib.blocks.WallMushroomBlock; + +public class EndWallMushroom extends WallMushroomBlock { + + public EndWallMushroom(int light) { + super(light); + } + + @Override + protected boolean isTerrain(BlockState state) { + return state.is(TagAPI.END_GROUND); + } +} diff --git a/src/main/java/ru/betterend/blocks/basis/EndWallPlantBlock.java b/src/main/java/ru/betterend/blocks/basis/EndWallPlantBlock.java index d01cfd5f..eeda17f7 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndWallPlantBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndWallPlantBlock.java @@ -1,125 +1,23 @@ package ru.betterend.blocks.basis; -import java.util.EnumMap; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.HorizontalDirectionalBlock; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.DirectionProperty; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.util.BlocksHelper; +import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BaseWallPlantBlock; + +public class EndWallPlantBlock extends BaseWallPlantBlock { + + public EndWallPlantBlock() {} -public class EndWallPlantBlock extends EndPlantBlock { - private static final EnumMap SHAPES = Maps.newEnumMap(ImmutableMap.of( - Direction.NORTH, Block.box(1, 1, 8, 15, 15, 16), - Direction.SOUTH, Block.box(1, 1, 0, 15, 15, 8), - Direction.WEST, Block.box(8, 1, 1, 16, 15, 15), - Direction.EAST, Block.box(0, 1, 1, 8, 15, 15))); - public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; - - public EndWallPlantBlock() { - this(FabricBlockSettings.of(Material.PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .sound(SoundType.GRASS) - .noCollission()); - } - public EndWallPlantBlock(int light) { - this(FabricBlockSettings.of(Material.PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .luminance(light) - .sound(SoundType.GRASS) - .noCollission()); + super(light); } - + public EndWallPlantBlock(Properties settings) { super(settings); } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { - stateManager.add(FACING); - } @Override - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - return SHAPES.get(state.getValue(FACING)); - } - - @Override - public BlockBehaviour.OffsetType getOffsetType() { - return BlockBehaviour.OffsetType.NONE; - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - Direction direction = (Direction) state.getValue(FACING); - BlockPos blockPos = pos.relative(direction.getOpposite()); - BlockState blockState = world.getBlockState(blockPos); - return isSupport(world, blockPos, blockState, direction); - } - - public boolean isSupport(LevelReader world, BlockPos pos, BlockState blockState, Direction direction) { - return blockState.getMaterial().isSolid() && blockState.isFaceSturdy(world, pos, direction); - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext ctx) { - BlockState blockState = this.defaultBlockState(); - LevelReader worldView = ctx.getLevel(); - BlockPos blockPos = ctx.getClickedPos(); - Direction[] directions = ctx.getNearestLookingDirections(); - for (int i = 0; i < directions.length; ++i) { - Direction direction = directions[i]; - if (direction.getAxis().isHorizontal()) { - Direction direction2 = direction.getOpposite(); - blockState = blockState.setValue(FACING, direction2); - if (blockState.canSurvive(worldView, blockPos)) { - return blockState; - } - } - } - return null; - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (!canSurvive(state, world, pos)) { - return Blocks.AIR.defaultBlockState(); - } - else { - return state; - } - } - - @Override - public BlockState rotate(BlockState state, Rotation rotation) { - return BlocksHelper.rotateHorizontal(state, rotation, FACING); - } - - @Override - public BlockState mirror(BlockState state, Mirror mirror) { - return BlocksHelper.mirrorHorizontal(state, mirror, FACING); + protected boolean isTerrain(BlockState state) { + return state.is(TagAPI.END_GROUND); } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndWeightedPlateBlock.java b/src/main/java/ru/betterend/blocks/basis/EndWeightedPlateBlock.java deleted file mode 100644 index c2977317..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndWeightedPlateBlock.java +++ /dev/null @@ -1,62 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.WeightedPressurePlateBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; - -public class EndWeightedPlateBlock extends WeightedPressurePlateBlock implements BlockModelProvider { - private final Block parent; - - public EndWeightedPlateBlock(Block source) { - super(15, FabricBlockSettings.copyOf(source).noCollission().noOcclusion().requiresCorrectToolForDrops().strength(0.5F)); - this.parent = source; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern; - if (blockState.getValue(POWER) > 0) { - pattern = Patterns.createJson(Patterns.BLOCK_PLATE_DOWN, parentId.getPath(), resourceLocation.getPath()); - } else { - pattern = Patterns.createJson(Patterns.BLOCK_PLATE_UP, parentId.getPath(), resourceLocation.getPath()); - } - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - String state = blockState.getValue(POWER) > 0 ? "_down" : "_up"; - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + state); - registerBlockModel(stateId, modelId, blockState, modelCache); - return ModelsHelper.createBlockSimple(modelId); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndWoodenButtonBlock.java b/src/main/java/ru/betterend/blocks/basis/EndWoodenButtonBlock.java deleted file mode 100644 index 36394d24..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndWoodenButtonBlock.java +++ /dev/null @@ -1,18 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.level.block.Block; - -public class EndWoodenButtonBlock extends EndButtonBlock { - - public EndWoodenButtonBlock(Block source) { - super(source, FabricBlockSettings.copyOf(source).strength(0.5F, 0.5F).noOcclusion(), true); - } - - @Override - protected SoundEvent getSound(boolean clicked) { - return clicked ? SoundEvents.WOODEN_BUTTON_CLICK_ON : SoundEvents.WOODEN_BUTTON_CLICK_OFF; - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/EndWoodenPlateBlock.java b/src/main/java/ru/betterend/blocks/basis/EndWoodenPlateBlock.java deleted file mode 100644 index 90454903..00000000 --- a/src/main/java/ru/betterend/blocks/basis/EndWoodenPlateBlock.java +++ /dev/null @@ -1,9 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.minecraft.world.level.block.Block; - -public class EndWoodenPlateBlock extends EndPlateBlock { - public EndWoodenPlateBlock(Block source) { - super(Sensitivity.EVERYTHING, source); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/FeatureSaplingBlock.java b/src/main/java/ru/betterend/blocks/basis/FeatureSaplingBlock.java deleted file mode 100644 index a2016f02..00000000 --- a/src/main/java/ru/betterend/blocks/basis/FeatureSaplingBlock.java +++ /dev/null @@ -1,123 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.Random; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SaplingBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.TagAPI; -import ru.bclib.client.models.BlockModelProvider; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public abstract class FeatureSaplingBlock extends SaplingBlock implements IRenderTypeable, BlockModelProvider { - private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); - - public FeatureSaplingBlock() { - super(null, FabricBlockSettings.of(Material.PLANT) - .breakByHand(true) - .collidable(false) - .instabreak() - .sound(SoundType.GRASS) - .randomTicks()); - } - - public FeatureSaplingBlock(int light) { - super(null, FabricBlockSettings.of(Material.PLANT) - .breakByHand(true) - .collidable(false) - .luminance(light) - .instabreak() - .sound(SoundType.GRASS) - .randomTicks()); - } - - protected abstract Feature getFeature(); - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - return SHAPE; - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getBlockState(pos.below()).is(TagAPI.END_GROUND); - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (!canSurvive(state, world, pos)) - return Blocks.AIR.defaultBlockState(); - else - return state; - } - - @Override - public boolean isBonemealSuccess(Level world, Random random, BlockPos pos, BlockState state) { - return random.nextInt(16) == 0; - } - - @Override - public void advanceTree(ServerLevel world, BlockPos pos, BlockState blockState, Random random) { - getFeature().place(world, world.getChunkSource().getGenerator(), random, pos, null); - } - - @Override - public void randomTick(BlockState state, ServerLevel world, BlockPos pos, Random random) { - this.tick(state, world, pos, random); - } - - @Override - public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) { - super.tick(state, world, pos, random); - if (isBonemealSuccess(world, random, pos, state)) { - performBonemeal(world, random, pos, state); - } - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return ModelsHelper.createBlockItem(resourceLocation); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - Optional pattern = Patterns.createJson(Patterns.BLOCK_CROSS, resourceLocation.getPath()); - return ModelsHelper.fromPattern(pattern); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/FurBlock.java b/src/main/java/ru/betterend/blocks/basis/FurBlock.java index d5f1f599..fc8e9524 100644 --- a/src/main/java/ru/betterend/blocks/basis/FurBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/FurBlock.java @@ -23,11 +23,12 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.blocks.BaseAttachedBlock; import ru.bclib.util.MHelper; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -public class FurBlock extends AttachedBlock implements IRenderTypeable { +public class FurBlock extends BaseAttachedBlock implements IRenderTypeable { private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); private final ItemLike drop; private final int dropChance; diff --git a/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java b/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java index 794d4100..cfe8679e 100644 --- a/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java @@ -40,9 +40,11 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.blocks.BaseBlockNotFull; +import ru.bclib.blocks.BlockProperties; import ru.bclib.client.models.ModelsHelper; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.PedestalState; +import ru.betterend.blocks.EndBlockProperties; +import ru.betterend.blocks.EndBlockProperties.PedestalState; import ru.betterend.blocks.InfusionPedestal; import ru.betterend.blocks.entities.InfusionPedestalEntity; import ru.betterend.blocks.entities.PedestalBlockEntity; @@ -51,9 +53,9 @@ import ru.betterend.registry.EndBlocks; import ru.betterend.rituals.InfusionRitual; @SuppressWarnings({"deprecation", "unused"}) -public class PedestalBlock extends BlockBaseNotFull implements EntityBlock { - public final static EnumProperty STATE = BlockProperties.PEDESTAL_STATE; - public static final BooleanProperty HAS_ITEM = BlockProperties.HAS_ITEM; +public class PedestalBlock extends BaseBlockNotFull implements EntityBlock { + public final static EnumProperty STATE = EndBlockProperties.PEDESTAL_STATE; + public static final BooleanProperty HAS_ITEM = EndBlockProperties.HAS_ITEM; public static final BooleanProperty HAS_LIGHT = BlockProperties.HAS_LIGHT; private static final VoxelShape SHAPE_DEFAULT; diff --git a/src/main/java/ru/betterend/blocks/basis/SimpleLeavesBlock.java b/src/main/java/ru/betterend/blocks/basis/SimpleLeavesBlock.java deleted file mode 100644 index 88c95d05..00000000 --- a/src/main/java/ru/betterend/blocks/basis/SimpleLeavesBlock.java +++ /dev/null @@ -1,38 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class SimpleLeavesBlock extends BlockBaseNotFull implements IRenderTypeable { - public SimpleLeavesBlock(MaterialColor color) { - super(FabricBlockSettings.of(Material.LEAVES) - .strength(0.2F) - .materialColor(color) - .sound(SoundType.GRASS) - .noOcclusion() - .isValidSpawn((state, world, pos, type) -> false) - .isSuffocating((state, world, pos) -> false) - .isViewBlocking((state, world, pos) -> false)); - } - - public SimpleLeavesBlock(MaterialColor color, int light) { - super(FabricBlockSettings.of(Material.LEAVES) - .luminance(light) - .materialColor(color) - .strength(0.2F) - .sound(SoundType.GRASS) - .noOcclusion() - .isValidSpawn((state, world, pos, type) -> false) - .isSuffocating((state, world, pos) -> false) - .isViewBlocking((state, world, pos) -> false)); - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } -} \ No newline at end of file diff --git a/src/main/java/ru/betterend/blocks/basis/StalactiteBlock.java b/src/main/java/ru/betterend/blocks/basis/StalactiteBlock.java deleted file mode 100644 index d36581d8..00000000 --- a/src/main/java/ru/betterend/blocks/basis/StalactiteBlock.java +++ /dev/null @@ -1,246 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.BlockPos.MutableBlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.Mth; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.LiquidBlockContainer; -import net.minecraft.world.level.block.SimpleWaterloggedBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class StalactiteBlock extends BlockBaseNotFull implements SimpleWaterloggedBlock, LiquidBlockContainer, IRenderTypeable { - public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; - public static final BooleanProperty IS_FLOOR = BlockProperties.IS_FLOOR; - public static final IntegerProperty SIZE = BlockProperties.SIZE; - private static final VoxelShape[] SHAPES; - - public StalactiteBlock(Block source) { - super(FabricBlockSettings.copy(source).noOcclusion()); - this.registerDefaultState(getStateDefinition().any().setValue(SIZE, 0).setValue(IS_FLOOR, true).setValue(WATERLOGGED, false)); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { - stateManager.add(WATERLOGGED, IS_FLOOR, SIZE); - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - return SHAPES[state.getValue(SIZE)]; - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext ctx) { - LevelReader world = ctx.getLevel(); - BlockPos pos = ctx.getClickedPos(); - Direction dir = ctx.getClickedFace(); - boolean water = world.getFluidState(pos).getType() == Fluids.WATER; - - if (dir == Direction.DOWN) { - if (isThis(world, pos.above()) || canSupportCenter(world, pos.above(), Direction.DOWN)) { - return defaultBlockState().setValue(IS_FLOOR, false).setValue(WATERLOGGED, water); - } - else if (isThis(world, pos.below()) || canSupportCenter(world, pos.below(), Direction.UP)) { - return defaultBlockState().setValue(IS_FLOOR, true).setValue(WATERLOGGED, water); - } - else { - return null; - } - } - else { - if (isThis(world, pos.below()) || canSupportCenter(world, pos.below(), Direction.UP)) { - return defaultBlockState().setValue(IS_FLOOR, true).setValue(WATERLOGGED, water); - } - else if (isThis(world, pos.above()) || canSupportCenter(world, pos.above(), Direction.DOWN)) { - return defaultBlockState().setValue(IS_FLOOR, false).setValue(WATERLOGGED, water); - } - else { - return null; - } - } - } - - @Override - public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) { - boolean hasUp = isThis(world, pos.above()); - boolean hasDown = isThis(world, pos.below()); - MutableBlockPos mut = new MutableBlockPos(); - if (hasUp && hasDown) { - boolean floor = state.getValue(IS_FLOOR); - BlockPos second = floor ? pos.above() : pos.below(); - BlockState bState = world.getBlockState(second); - world.setBlockAndUpdate(pos, state.setValue(SIZE, 1).setValue(IS_FLOOR, floor)); - world.setBlockAndUpdate(second, bState.setValue(SIZE, 1).setValue(IS_FLOOR, !floor)); - - bState = state; - int startSize = floor ? 1 : 2; - mut.set(pos.getX(), pos.getY() + 1, pos.getZ()); - for (int i = 0; i < 8 && isThis(bState); i++) { - world.setBlockAndUpdate(mut, bState.setValue(SIZE, startSize++).setValue(IS_FLOOR, false)); - mut.setY(mut.getY() + 1); - bState = world.getBlockState(mut); - } - - bState = state; - startSize = floor ? 2 : 1; - mut.set(pos.getX(), pos.getY() - 1, pos.getZ()); - for (int i = 0; i < 8 && isThis(bState); i++) { - world.setBlockAndUpdate(mut, bState.setValue(SIZE, startSize++).setValue(IS_FLOOR, true)); - mut.setY(mut.getY() - 1); - bState = world.getBlockState(mut); - } - } - else if (hasDown) { - mut.setX(pos.getX()); - mut.setZ(pos.getZ()); - for (int i = 1; i < 8; i++) { - mut.setY(pos.getY() - i); - if (isThis(world, mut)) { - BlockState state2 = world.getBlockState(mut); - int size = state2.getValue(SIZE); - if (size < i) { - world.setBlockAndUpdate(mut, state2.setValue(SIZE, i).setValue(IS_FLOOR, true)); - } - else { - break; - } - } - else { - break; - } - } - } - else if (hasUp) { - mut.setX(pos.getX()); - mut.setZ(pos.getZ()); - for (int i = 1; i < 8; i++) { - mut.setY(pos.getY() + i); - if (isThis(world, mut)) { - BlockState state2 = world.getBlockState(mut); - int size = state2.getValue(SIZE); - if (size < i) { - world.setBlockAndUpdate(mut, state2.setValue(SIZE, i).setValue(IS_FLOOR, false)); - } - else { - break; - } - } - else { - break; - } - } - } - } - - private boolean isThis(LevelReader world, BlockPos pos) { - return isThis(world.getBlockState(pos)); - } - - private boolean isThis(BlockState state) { - return state.getBlock() instanceof StalactiteBlock; - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (!canSurvive(state, world, pos)) { - return Blocks.AIR.defaultBlockState(); - } - return state; - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - int size = state.getValue(SIZE); - return checkUp(world, pos, size) || checkDown(world, pos, size); - } - - private boolean checkUp(BlockGetter world, BlockPos pos, int size) { - BlockPos p = pos.above(); - BlockState state = world.getBlockState(p); - return (isThis(state) && state.getValue(SIZE) >= size) || state.isCollisionShapeFullBlock(world, p); - } - - private boolean checkDown(BlockGetter world, BlockPos pos, int size) { - BlockPos p = pos.below(); - BlockState state = world.getBlockState(p); - return (isThis(state) && state.getValue(SIZE) >= size) || state.isCollisionShapeFullBlock(world, p); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - Optional pattern = Patterns.createJson(Patterns.BLOCK_CROSS_SHADED, resourceLocation.getPath()); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - BlockModelRotation rotation = blockState.getValue(IS_FLOOR) ? BlockModelRotation.X0_Y0 : BlockModelRotation.X180_Y0; - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - stateId.getPath() + "_" + blockState.getValue(SIZE)); - registerBlockModel(modelId, modelId, blockState, modelCache); - return ModelsHelper.createMultiVariant(modelId, rotation.getRotation(), false); - } - - @Override - public boolean canPlaceLiquid(BlockGetter world, BlockPos pos, BlockState state, Fluid fluid) { - return false; - } - - @Override - public boolean placeLiquid(LevelAccessor world, BlockPos pos, BlockState state, FluidState fluidState) { - return false; - } - - @Override - public FluidState getFluidState(BlockState state) { - return state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : Fluids.EMPTY.defaultFluidState(); - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - static { - float end = 2F / 8F; - float start = 5F / 8F; - SHAPES = new VoxelShape[8]; - for (int i = 0; i < 8; i++) { - int side = Mth.floor(Mth.lerp(i / 7F, start, end) * 8F + 0.5F); - SHAPES[i] = Block.box(side, 0, side, 16 - side, 16, 16 - side); - } - } -} \ No newline at end of file diff --git a/src/main/java/ru/betterend/blocks/basis/StoneLanternBlock.java b/src/main/java/ru/betterend/blocks/basis/StoneLanternBlock.java index 9712f72a..9e14e10c 100644 --- a/src/main/java/ru/betterend/blocks/basis/StoneLanternBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/StoneLanternBlock.java @@ -24,6 +24,7 @@ import ru.betterend.blocks.AuroraCrystalBlock; import ru.betterend.client.models.Patterns; import ru.betterend.interfaces.IColorProvider; +@SuppressWarnings("deprecation") public class StoneLanternBlock extends EndLanternBlock implements IColorProvider { private static final VoxelShape SHAPE_CEIL = Block.box(3, 1, 3, 13, 16, 13); private static final VoxelShape SHAPE_FLOOR = Block.box(3, 0, 3, 13, 15, 13); @@ -56,9 +57,7 @@ public class StoneLanternBlock extends EndLanternBlock implements IColorProvider @Override public ItemColor getItemProvider() { - return (stack, tintIndex) -> { - return ColorUtil.color(COLORS[3].getX(), COLORS[3].getY(), COLORS[3].getZ()); - }; + return (stack, tintIndex) -> ColorUtil.color(COLORS[3].getX(), COLORS[3].getY(), COLORS[3].getZ()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/StrippableBarkBlock.java b/src/main/java/ru/betterend/blocks/basis/StrippableBarkBlock.java deleted file mode 100644 index f845adc4..00000000 --- a/src/main/java/ru/betterend/blocks/basis/StrippableBarkBlock.java +++ /dev/null @@ -1,41 +0,0 @@ -package ru.betterend.blocks.basis; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.RotatedPillarBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.MaterialColor; -import net.minecraft.world.phys.BlockHitResult; - -public class StrippableBarkBlock extends BarkBlock { - private final Block striped; - - public StrippableBarkBlock(MaterialColor color, Block striped) { - super(FabricBlockSettings.copyOf(striped).materialColor(color)); - this.striped = striped; - } - - @Override - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (player.getMainHandItem().getItem().is(FabricToolTags.AXES)) { - world.playSound(player, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); - if (!world.isClientSide) { - world.setBlock(pos, striped.defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS)), 11); - if (!player.isCreative()) { - player.getMainHandItem().hurt(1, world.random, (ServerPlayer) player); - } - } - return InteractionResult.SUCCESS; - } - return InteractionResult.FAIL; - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java b/src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java deleted file mode 100644 index b71188c3..00000000 --- a/src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java +++ /dev/null @@ -1,154 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Random; - -import org.jetbrains.annotations.Nullable; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.block.model.MultiVariant; -import net.minecraft.client.renderer.block.model.Variant; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.EnumProperty; -import net.minecraft.world.level.material.MaterialColor; -import net.minecraft.world.phys.BlockHitResult; -import ru.bclib.client.models.ModelsHelper; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.client.models.Patterns; - -public class TripleTerrainBlock extends EndTerrainBlock { - public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; - - public TripleTerrainBlock(MaterialColor color) { - super(color); - this.registerDefaultState(this.defaultBlockState().setValue(SHAPE, TripleShape.BOTTOM)); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { - stateManager.add(SHAPE); - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext ctx) { - Direction dir = ctx.getClickedFace(); - TripleShape shape = dir == Direction.UP ? TripleShape.BOTTOM : dir == Direction.DOWN ? TripleShape.TOP : TripleShape.MIDDLE; - return this.defaultBlockState().setValue(SHAPE, shape); - } - - @Override - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - TripleShape shape = state.getValue(SHAPE); - if (shape == TripleShape.BOTTOM) { - return super.use(state, world, pos, player, hand, hit); - } - return InteractionResult.FAIL; - } - - @Override - public void randomTick(BlockState state, ServerLevel world, BlockPos pos, Random random) { - TripleShape shape = state.getValue(SHAPE); - if (shape == TripleShape.BOTTOM) { - super.randomTick(state, world, pos, random); - } else if (random.nextInt(16) == 0) { - boolean bottom = canStayBottom(world, pos); - if (shape == TripleShape.TOP) { - if (!bottom) { - world.setBlockAndUpdate(pos, Blocks.END_STONE.defaultBlockState()); - } - } - else { - boolean top = canStay(state, world, pos) || isMiddle(world.getBlockState(pos.above())); - if (!top && !bottom) { - world.setBlockAndUpdate(pos, Blocks.END_STONE.defaultBlockState()); - } else if (top && !bottom) { - world.setBlockAndUpdate(pos, state.setValue(SHAPE, TripleShape.BOTTOM)); - } else if (!top) { - world.setBlockAndUpdate(pos, state.setValue(SHAPE, TripleShape.TOP)); - } - } - } - } - - protected boolean canStayBottom(LevelReader world, BlockPos pos) { - BlockPos blockPos = pos.below(); - BlockState blockState = world.getBlockState(blockPos); - if (isMiddle(blockState)) { - return true; - } else if (blockState.getFluidState().getAmount() == 8) { - return false; - } else { - return !blockState.isFaceSturdy(world, blockPos, Direction.UP); - } - } - - @Override - public BlockModel getItemModel(ResourceLocation blockId) { - return getBlockModel(blockId, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - String name = resourceLocation.getPath(); - Optional pattern; - if (isMiddle(blockState)) { - pattern = Patterns.createBlockSimple(name + "_top"); - } else { - Map textures = Maps.newHashMap(); - textures.put("%top%", "betterend:block/" + name + "_top"); - textures.put("%side%", "betterend:block/" + name + "_side"); - textures.put("%bottom%", "minecraft:block/end_stone"); - pattern = Patterns.createJson(Patterns.BLOCK_TOP_SIDE_BOTTOM, textures); - } - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - boolean isMiddle = isMiddle(blockState); - String middle = isMiddle ? "_middle" : ""; - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + middle); - registerBlockModel(stateId, modelId, blockState, modelCache); - if (isMiddle) { - List variants = Lists.newArrayList(); - for (BlockModelRotation rotation : BlockModelRotation.values()) { - variants.add(new Variant(modelId, rotation.getRotation(), false, 1)); - } - return new MultiVariant(variants); - } else if (blockState.getValue(SHAPE) == TripleShape.TOP) { - return new MultiVariant(Lists.newArrayList( - new Variant(modelId, BlockModelRotation.X180_Y0.getRotation(), false, 1), - new Variant(modelId, BlockModelRotation.X180_Y90.getRotation(), false, 1), - new Variant(modelId, BlockModelRotation.X180_Y180.getRotation(), false, 1), - new Variant(modelId, BlockModelRotation.X180_Y270.getRotation(), false, 1) - )); - } - return ModelsHelper.createRandomTopModel(modelId); - } - - protected boolean isMiddle(BlockState blockState) { - return blockState.is(this) && blockState.getValue(SHAPE) == TripleShape.MIDDLE; - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/UnderwaterPlantBlock.java b/src/main/java/ru/betterend/blocks/basis/UnderwaterPlantBlock.java deleted file mode 100644 index 7b413f2d..00000000 --- a/src/main/java/ru/betterend/blocks/basis/UnderwaterPlantBlock.java +++ /dev/null @@ -1,145 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Lists; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.BonemealableBlock; -import net.minecraft.world.level.block.LiquidBlockContainer; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import net.minecraft.world.phys.Vec3; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.TagAPI; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.registry.EndBlocks; - -public class UnderwaterPlantBlock extends BlockBaseNotFull implements IRenderTypeable, BonemealableBlock, LiquidBlockContainer { - private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); - - public UnderwaterPlantBlock() { - super(FabricBlockSettings.of(Material.WATER_PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .sound(SoundType.WET_GRASS) - .noCollission()); - } - - public UnderwaterPlantBlock(int light) { - super(FabricBlockSettings.of(Material.WATER_PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .luminance(light) - .sound(SoundType.WET_GRASS) - .noCollission()); - } - - public UnderwaterPlantBlock(Properties settings) { - super(settings); - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - Vec3 vec3d = state.getOffset(view, pos); - return SHAPE.move(vec3d.x, vec3d.y, vec3d.z); - } - - @Override - public BlockBehaviour.OffsetType getOffsetType() { - return BlockBehaviour.OffsetType.XZ; - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - BlockState down = world.getBlockState(pos.below()); - state = world.getBlockState(pos); - return isTerrain(down) && state.getFluidState().getType().equals(Fluids.WATER.getSource()); - } - - protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.END_GROUND) || state.getBlock() == EndBlocks.ENDSTONE_DUST; - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (!canSurvive(state, world, pos)) { - world.destroyBlock(pos, true); - return Blocks.WATER.defaultBlockState(); - } - else { - return state; - } - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { - return Lists.newArrayList(new ItemStack(this)); - } - else { - return Lists.newArrayList(); - } - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public boolean isValidBonemealTarget(BlockGetter world, BlockPos pos, BlockState state, boolean isClient) { - return true; - } - - @Override - public boolean isBonemealSuccess(Level world, Random random, BlockPos pos, BlockState state) { - return true; - } - - @Override - public void performBonemeal(ServerLevel world, Random random, BlockPos pos, BlockState state) { - ItemEntity item = new ItemEntity(world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, new ItemStack(this)); - world.addFreshEntity(item); - } - - @Override - public boolean canPlaceLiquid(BlockGetter world, BlockPos pos, BlockState state, Fluid fluid) { - return false; - } - - @Override - public boolean placeLiquid(LevelAccessor world, BlockPos pos, BlockState state, FluidState fluidState) { - return false; - } - - @Override - public FluidState getFluidState(BlockState state) { - return Fluids.WATER.getSource(false); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/UnderwaterPlantWithAgeBlock.java b/src/main/java/ru/betterend/blocks/basis/UnderwaterPlantWithAgeBlock.java deleted file mode 100644 index 4ba46a39..00000000 --- a/src/main/java/ru/betterend/blocks/basis/UnderwaterPlantWithAgeBlock.java +++ /dev/null @@ -1,57 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.Random; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.WorldGenLevel; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.BlockProperties; - -public abstract class UnderwaterPlantWithAgeBlock extends UnderwaterPlantBlock { - public static final IntegerProperty AGE = BlockProperties.AGE; - - public UnderwaterPlantWithAgeBlock() { - super(FabricBlockSettings.of(Material.WATER_PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .sound(SoundType.WET_GRASS) - .randomTicks() - .noCollission()); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { - stateManager.add(AGE); - } - - public abstract void grow(WorldGenLevel world, Random random, BlockPos pos); - - @Override - public void performBonemeal(ServerLevel world, Random random, BlockPos pos, BlockState state) { - if (random.nextInt(4) == 0) { - int age = state.getValue(AGE); - if (age < 3) { - world.setBlockAndUpdate(pos, state.setValue(AGE, age + 1)); - } - else { - grow(world, random, pos); - } - } - } - - @Override - public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) { - super.tick(state, world, pos, random); - if (isBonemealSuccess(world, random, pos, state)) { - performBonemeal(world, random, pos, state); - } - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/UpDownPlantBlock.java b/src/main/java/ru/betterend/blocks/basis/UpDownPlantBlock.java deleted file mode 100644 index 6b353bba..00000000 --- a/src/main/java/ru/betterend/blocks/basis/UpDownPlantBlock.java +++ /dev/null @@ -1,95 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.List; - -import com.google.common.collect.Lists; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.api.TagAPI; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class UpDownPlantBlock extends BlockBaseNotFull implements IRenderTypeable { - private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 16, 12); - - public UpDownPlantBlock() { - super(FabricBlockSettings.of(Material.PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .sound(SoundType.GRASS) - .noCollission()); - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - return SHAPE; - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - BlockState down = world.getBlockState(pos.below()); - BlockState up = world.getBlockState(pos.above()); - return (isTerrain(down) || down.getBlock() == this) && (isSupport(up, world, pos) || up.getBlock() == this); - } - - protected boolean isTerrain(BlockState state) { - return state.is(TagAPI.END_GROUND); - } - - protected boolean isSupport(BlockState state, LevelReader world, BlockPos pos) { - return canSupportCenter(world, pos.above(), Direction.UP); - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (!canSurvive(state, world, pos)) { - return Blocks.AIR.defaultBlockState(); - } - else { - return state; - } - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { - return Lists.newArrayList(new ItemStack(this)); - } - else { - return Lists.newArrayList(); - } - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public void playerDestroy(Level world, Player player, BlockPos pos, BlockState state, BlockEntity blockEntity, ItemStack stack) { - super.playerDestroy(world, player, pos, state, blockEntity, stack); - world.neighborChanged(pos, Blocks.AIR, pos.below()); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/VineBlock.java b/src/main/java/ru/betterend/blocks/basis/VineBlock.java deleted file mode 100644 index 4591d30d..00000000 --- a/src/main/java/ru/betterend/blocks/basis/VineBlock.java +++ /dev/null @@ -1,147 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Lists; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.tags.BlockTags; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.EnchantmentHelper; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.BonemealableBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.EnumProperty; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import net.minecraft.world.phys.Vec3; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class VineBlock extends BlockBaseNotFull implements IRenderTypeable, BonemealableBlock { - public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; - private static final VoxelShape VOXEL_SHAPE = Block.box(2, 0, 2, 14, 16, 14); - - public VineBlock() { - this(0, false); - } - - public VineBlock(int light) { - this(light, false); - } - - public VineBlock(int light, boolean bottomOnly) { - super(FabricBlockSettings.of(Material.PLANT) - .breakByTool(FabricToolTags.SHEARS) - .breakByHand(true) - .sound(SoundType.GRASS) - .lightLevel((state) -> bottomOnly ? state.getValue(SHAPE) == TripleShape.BOTTOM ? light : 0 : light) - .noCollission()); - this.registerDefaultState(this.stateDefinition.any().setValue(SHAPE, TripleShape.BOTTOM)); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder stateManager) { - stateManager.add(SHAPE); - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - Vec3 vec3d = state.getOffset(view, pos); - return VOXEL_SHAPE.move(vec3d.x, vec3d.y, vec3d.z); - } - - @Override - public BlockBehaviour.OffsetType getOffsetType() { - return BlockBehaviour.OffsetType.XZ; - } - - public boolean canGenerate(BlockState state, LevelReader world, BlockPos pos) { - return isSupport(state, world, pos); - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return isSupport(state, world, pos); - } - - protected boolean isSupport(BlockState state, LevelReader world, BlockPos pos) { - BlockState up = world.getBlockState(pos.above()); - return up.is(this) || up.is(BlockTags.LEAVES) || canSupportCenter(world, pos.above(), Direction.DOWN); - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if (!canSurvive(state, world, pos)) { - return Blocks.AIR.defaultBlockState(); - } - else { - if (world.getBlockState(pos.below()).getBlock() != this) - return state.setValue(SHAPE, TripleShape.BOTTOM); - else if (world.getBlockState(pos.above()).getBlock() != this) - return state.setValue(SHAPE, TripleShape.TOP); - return state.setValue(SHAPE, TripleShape.MIDDLE); - } - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { - return Lists.newArrayList(new ItemStack(this)); - } - else { - return Lists.newArrayList(); - } - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public boolean isValidBonemealTarget(BlockGetter world, BlockPos pos, BlockState state, boolean isClient) { - while (world.getBlockState(pos).getBlock() == this) { - pos = pos.below(); - } - return world.getBlockState(pos).isAir(); - } - - @Override - public boolean isBonemealSuccess(Level world, Random random, BlockPos pos, BlockState state) { - while (world.getBlockState(pos).getBlock() == this) { - pos = pos.below(); - } - return world.isEmptyBlock(pos); - } - - @Override - public void performBonemeal(ServerLevel world, Random random, BlockPos pos, BlockState state) { - while (world.getBlockState(pos).getBlock() == this) { - pos = pos.below(); - } - world.setBlockAndUpdate(pos, defaultBlockState()); - BlocksHelper.setWithoutUpdate(world, pos, defaultBlockState()); - } -} diff --git a/src/main/java/ru/betterend/blocks/basis/WallMushroomBlock.java b/src/main/java/ru/betterend/blocks/basis/WallMushroomBlock.java deleted file mode 100644 index 7e6a2ac4..00000000 --- a/src/main/java/ru/betterend/blocks/basis/WallMushroomBlock.java +++ /dev/null @@ -1,39 +0,0 @@ -package ru.betterend.blocks.basis; - -import java.util.List; - -import com.google.common.collect.Lists; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.storage.loot.LootContext; - -public class WallMushroomBlock extends EndWallPlantBlock { - public WallMushroomBlock(int light) { - super(FabricBlockSettings.of(Material.PLANT) - .breakByTool(FabricToolTags.AXES) - .breakByHand(true) - .luminance(light) - .hardness(0.2F) - .sound(SoundType.GRASS) - .sound(SoundType.WOOD) - .noCollission()); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Lists.newArrayList(new ItemStack(this)); - } - - @Override - public boolean isSupport(LevelReader world, BlockPos pos, BlockState blockState, Direction direction) { - return blockState.getMaterial().isSolid() && blockState.isFaceSturdy(world, pos, direction); - } -} diff --git a/src/main/java/ru/betterend/blocks/complex/CrystalSubblocksMaterial.java b/src/main/java/ru/betterend/blocks/complex/CrystalSubblocksMaterial.java index d96a1cde..991f434a 100644 --- a/src/main/java/ru/betterend/blocks/complex/CrystalSubblocksMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/CrystalSubblocksMaterial.java @@ -4,13 +4,9 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; import net.minecraft.world.level.block.Block; +import ru.bclib.blocks.*; import ru.bclib.util.TagHelper; import ru.betterend.blocks.EndPedestal; -import ru.betterend.blocks.basis.BlockBase; -import ru.betterend.blocks.basis.EndPillarBlock; -import ru.betterend.blocks.basis.EndSlabBlock; -import ru.betterend.blocks.basis.EndStairsBlock; -import ru.betterend.blocks.basis.EndWallBlock; import ru.betterend.recipe.CraftingRecipes; import ru.betterend.recipe.builders.GridRecipe; import ru.betterend.registry.EndBlocks; @@ -30,17 +26,17 @@ public class CrystalSubblocksMaterial { public CrystalSubblocksMaterial(String name, Block source) { FabricBlockSettings material = FabricBlockSettings.copyOf(source); - polished = EndBlocks.registerBlock(name + "_polished", new BlockBase(material)); - tiles = EndBlocks.registerBlock(name + "_tiles", new BlockBase(material)); - pillar = EndBlocks.registerBlock(name + "_pillar", new EndPillarBlock(material)); - stairs = EndBlocks.registerBlock(name + "_stairs", new EndStairsBlock(source)); - slab = EndBlocks.registerBlock(name + "_slab", new EndSlabBlock(source)); - wall = EndBlocks.registerBlock(name + "_wall", new EndWallBlock(source)); + polished = EndBlocks.registerBlock(name + "_polished", new BaseBlock(material)); + tiles = EndBlocks.registerBlock(name + "_tiles", new BaseBlock(material)); + pillar = EndBlocks.registerBlock(name + "_pillar", new BaseRotatedPillarBlock(material)); + stairs = EndBlocks.registerBlock(name + "_stairs", new BaseStairsBlock(source)); + slab = EndBlocks.registerBlock(name + "_slab", new BaseSlabBlock(source)); + wall = EndBlocks.registerBlock(name + "_wall", new BaseWallBlock(source)); pedestal = EndBlocks.registerBlock(name + "_pedestal", new EndPedestal(source)); - bricks = EndBlocks.registerBlock(name + "_bricks", new BlockBase(material)); - brick_stairs = EndBlocks.registerBlock(name + "_bricks_stairs", new EndStairsBlock(bricks)); - brick_slab = EndBlocks.registerBlock(name + "_bricks_slab", new EndSlabBlock(bricks)); - brick_wall = EndBlocks.registerBlock(name + "_bricks_wall", new EndWallBlock(bricks)); + bricks = EndBlocks.registerBlock(name + "_bricks", new BaseBlock(material)); + brick_stairs = EndBlocks.registerBlock(name + "_bricks_stairs", new BaseStairsBlock(bricks)); + brick_slab = EndBlocks.registerBlock(name + "_bricks_slab", new BaseSlabBlock(bricks)); + brick_wall = EndBlocks.registerBlock(name + "_bricks_wall", new BaseWallBlock(bricks)); // Recipes // GridRecipe.make(name + "_bricks", bricks).setOutputCount(4).setShape("##", "##").addMaterial('#', source).setGroup("end_bricks").build(); diff --git a/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java b/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java index 6c70bf1f..c7b36299 100644 --- a/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java @@ -14,32 +14,17 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.MaterialColor; +import ru.bclib.blocks.*; import ru.bclib.items.ModelProviderItem; -import ru.bclib.items.tool.BaseAxeItem; -import ru.bclib.items.tool.BaseHoeItem; -import ru.bclib.items.tool.BasePickaxeItem; -import ru.bclib.items.tool.BaseShovelItem; -import ru.bclib.items.tool.BaseSwordItem; +import ru.bclib.items.tool.*; import ru.bclib.util.TagHelper; import ru.betterend.blocks.BulbVineLanternBlock; import ru.betterend.blocks.BulbVineLanternColoredBlock; import ru.betterend.blocks.ChandelierBlock; -import ru.betterend.blocks.basis.BlockBase; -import ru.betterend.blocks.basis.EndAnvilBlock; -import ru.betterend.blocks.basis.EndChainBlock; -import ru.betterend.blocks.basis.EndDoorBlock; -import ru.betterend.blocks.basis.EndMetalPaneBlock; -import ru.betterend.blocks.basis.EndSlabBlock; -import ru.betterend.blocks.basis.EndStairsBlock; -import ru.betterend.blocks.basis.EndTrapdoorBlock; -import ru.betterend.blocks.basis.EndWoodenPlateBlock; +import ru.betterend.blocks.basis.*; import ru.betterend.item.EndArmorItem; import ru.betterend.item.tool.EndHammerItem; -import ru.betterend.recipe.builders.AlloyingRecipe; -import ru.betterend.recipe.builders.AnvilRecipe; -import ru.betterend.recipe.builders.FurnaceRecipe; -import ru.betterend.recipe.builders.GridRecipe; -import ru.betterend.recipe.builders.SmithingTableRecipe; +import ru.betterend.recipe.builders.*; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndItems; import ru.betterend.registry.EndTags; @@ -104,17 +89,17 @@ public class MetalMaterial { BlockBehaviour.Properties lanternProperties = FabricBlockSettings.copyOf(settings).hardness(1).resistance(1).luminance(15).sound(SoundType.LANTERN); final int level = material.getLevel(); - ore = hasOre ? EndBlocks.registerBlock(name + "_ore", new BlockBase(FabricBlockSettings.copyOf(Blocks.END_STONE))) : null; - block = EndBlocks.registerBlock(name + "_block", new BlockBase(settings)); - tile = EndBlocks.registerBlock(name + "_tile", new BlockBase(settings)); - stairs = EndBlocks.registerBlock(name + "_stairs", new EndStairsBlock(tile)); - slab = EndBlocks.registerBlock(name + "_slab", new EndSlabBlock(tile)); - door = EndBlocks.registerBlock(name + "_door", new EndDoorBlock(block)); - trapdoor = EndBlocks.registerBlock(name + "_trapdoor", new EndTrapdoorBlock(block)); + ore = hasOre ? EndBlocks.registerBlock(name + "_ore", new BaseBlock(FabricBlockSettings.copyOf(Blocks.END_STONE))) : null; + block = EndBlocks.registerBlock(name + "_block", new BaseBlock(settings)); + tile = EndBlocks.registerBlock(name + "_tile", new BaseBlock(settings)); + stairs = EndBlocks.registerBlock(name + "_stairs", new BaseStairsBlock(tile)); + slab = EndBlocks.registerBlock(name + "_slab", new BaseSlabBlock(tile)); + door = EndBlocks.registerBlock(name + "_door", new BaseDoorBlock(block)); + trapdoor = EndBlocks.registerBlock(name + "_trapdoor", new BaseTrapdoorBlock(block)); anvil = EndBlocks.registerBlock(name + "_anvil", new EndAnvilBlock(block.defaultMaterialColor(), level)); - bars = EndBlocks.registerBlock(name + "_bars", new EndMetalPaneBlock(block)); - chain = EndBlocks.registerBlock(name + "_chain", new EndChainBlock(block.defaultMaterialColor())); - pressurePlate = EndBlocks.registerBlock(name + "_plate", new EndWoodenPlateBlock(block)); + bars = EndBlocks.registerBlock(name + "_bars", new BaseMetalBarsBlock(block)); + chain = EndBlocks.registerBlock(name + "_chain", new BaseChainBlock(block.defaultMaterialColor())); + pressurePlate = EndBlocks.registerBlock(name + "_plate", new WoodenPressurePlateBlock(block)); chandelier = EndBlocks.registerBlock(name + "_chandelier", new ChandelierBlock(block)); bulb_lantern = EndBlocks.registerBlock(name + "_bulb_lantern", new BulbVineLanternBlock(lanternProperties)); diff --git a/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java b/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java index adb713eb..e13baabd 100644 --- a/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java @@ -7,17 +7,10 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.material.MaterialColor; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.*; import ru.bclib.util.TagHelper; import ru.betterend.blocks.EndPedestal; -import ru.betterend.blocks.basis.BlockBase; -import ru.betterend.blocks.basis.EndFurnaceBlock; -import ru.betterend.blocks.basis.EndPillarBlock; -import ru.betterend.blocks.basis.EndSlabBlock; -import ru.betterend.blocks.basis.EndStairsBlock; -import ru.betterend.blocks.basis.EndStoneButtonBlock; -import ru.betterend.blocks.basis.EndStonePlateBlock; -import ru.betterend.blocks.basis.EndWallBlock; -import ru.betterend.blocks.basis.StoneLanternBlock; +import ru.betterend.blocks.basis.*; import ru.betterend.recipe.CraftingRecipes; import ru.betterend.recipe.builders.GridRecipe; import ru.betterend.registry.EndBlocks; @@ -46,23 +39,23 @@ public class StoneMaterial { public StoneMaterial(String name, MaterialColor color) { FabricBlockSettings material = FabricBlockSettings.copyOf(Blocks.END_STONE).materialColor(color); - stone = EndBlocks.registerBlock(name, new BlockBase(material)); - polished = EndBlocks.registerBlock(name + "_polished", new BlockBase(material)); - tiles = EndBlocks.registerBlock(name + "_tiles", new BlockBase(material)); - pillar = EndBlocks.registerBlock(name + "_pillar", new EndPillarBlock(material)); - stairs = EndBlocks.registerBlock(name + "_stairs", new EndStairsBlock(stone)); - slab = EndBlocks.registerBlock(name + "_slab", new EndSlabBlock(stone)); - wall = EndBlocks.registerBlock(name + "_wall", new EndWallBlock(stone)); - button = EndBlocks.registerBlock(name + "_button", new EndStoneButtonBlock(stone)); - pressure_plate = EndBlocks.registerBlock(name + "_plate", new EndStonePlateBlock(stone)); + stone = EndBlocks.registerBlock(name, new BaseBlock(material)); + polished = EndBlocks.registerBlock(name + "_polished", new BaseBlock(material)); + tiles = EndBlocks.registerBlock(name + "_tiles", new BaseBlock(material)); + pillar = EndBlocks.registerBlock(name + "_pillar", new BaseRotatedPillarBlock(material)); + stairs = EndBlocks.registerBlock(name + "_stairs", new BaseStairsBlock(stone)); + slab = EndBlocks.registerBlock(name + "_slab", new BaseSlabBlock(stone)); + wall = EndBlocks.registerBlock(name + "_wall", new BaseWallBlock(stone)); + button = EndBlocks.registerBlock(name + "_button", new BaseStoneButtonBlock(stone)); + pressure_plate = EndBlocks.registerBlock(name + "_plate", new StonePressurePlateBlock(stone)); pedestal = EndBlocks.registerBlock(name + "_pedestal", new EndPedestal(stone)); lantern = EndBlocks.registerBlock(name + "_lantern", new StoneLanternBlock(stone)); - bricks = EndBlocks.registerBlock(name + "_bricks", new BlockBase(material)); - brick_stairs = EndBlocks.registerBlock(name + "_bricks_stairs", new EndStairsBlock(bricks)); - brick_slab = EndBlocks.registerBlock(name + "_bricks_slab", new EndSlabBlock(bricks)); - brick_wall = EndBlocks.registerBlock(name + "_bricks_wall", new EndWallBlock(bricks)); - furnace = EndBlocks.registerBlock(name + "_furnace", new EndFurnaceBlock(bricks)); + bricks = EndBlocks.registerBlock(name + "_bricks", new BaseBlock(material)); + brick_stairs = EndBlocks.registerBlock(name + "_bricks_stairs", new BaseStairsBlock(bricks)); + brick_slab = EndBlocks.registerBlock(name + "_bricks_slab", new BaseSlabBlock(bricks)); + brick_wall = EndBlocks.registerBlock(name + "_bricks_wall", new BaseWallBlock(bricks)); + furnace = EndBlocks.registerBlock(name + "_furnace", new BaseFurnaceBlock(bricks)); // Recipes // GridRecipe.make(name + "_bricks", bricks).setOutputCount(4).setShape("##", "##").addMaterial('#', stone).setGroup("end_bricks").build(); diff --git a/src/main/java/ru/betterend/blocks/complex/WoodenMaterial.java b/src/main/java/ru/betterend/blocks/complex/WoodenMaterial.java index 34e345a3..da8bfedc 100644 --- a/src/main/java/ru/betterend/blocks/complex/WoodenMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/WoodenMaterial.java @@ -12,28 +12,9 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.*; import ru.bclib.util.TagHelper; import ru.betterend.BetterEnd; -import ru.betterend.blocks.basis.BarkBlock; -import ru.betterend.blocks.basis.BlockBase; -import ru.betterend.blocks.basis.EndBarrelBlock; -import ru.betterend.blocks.basis.EndBlockStripableLogLog; -import ru.betterend.blocks.basis.EndBookshelfBlock; -import ru.betterend.blocks.basis.EndChestBlock; -import ru.betterend.blocks.basis.EndComposterBlock; -import ru.betterend.blocks.basis.EndCraftingTableBlock; -import ru.betterend.blocks.basis.EndDoorBlock; -import ru.betterend.blocks.basis.EndFenceBlock; -import ru.betterend.blocks.basis.EndGateBlock; -import ru.betterend.blocks.basis.EndLadderBlock; -import ru.betterend.blocks.basis.EndPillarBlock; -import ru.betterend.blocks.basis.EndSignBlock; -import ru.betterend.blocks.basis.EndSlabBlock; -import ru.betterend.blocks.basis.EndStairsBlock; -import ru.betterend.blocks.basis.EndTrapdoorBlock; -import ru.betterend.blocks.basis.EndWoodenButtonBlock; -import ru.betterend.blocks.basis.EndWoodenPlateBlock; -import ru.betterend.blocks.basis.StrippableBarkBlock; import ru.betterend.recipe.builders.GridRecipe; import ru.betterend.registry.EndBlocks; @@ -70,30 +51,30 @@ public class WoodenMaterial { public WoodenMaterial(String name, MaterialColor woodColor, MaterialColor planksColor) { FabricBlockSettings materialPlanks = FabricBlockSettings.copyOf(Blocks.OAK_PLANKS).materialColor(planksColor); - log_stripped = EndBlocks.registerBlock(name + "_stripped_log", new EndPillarBlock(materialPlanks)); - bark_stripped = EndBlocks.registerBlock(name + "_stripped_bark", new BarkBlock(materialPlanks)); + log_stripped = EndBlocks.registerBlock(name + "_stripped_log", new BaseRotatedPillarBlock(materialPlanks)); + bark_stripped = EndBlocks.registerBlock(name + "_stripped_bark", new BaseBarkBlock(materialPlanks)); - log = EndBlocks.registerBlock(name + "_log", new EndBlockStripableLogLog(woodColor, log_stripped)); - bark = EndBlocks.registerBlock(name + "_bark", new StrippableBarkBlock(woodColor, bark_stripped)); + log = EndBlocks.registerBlock(name + "_log", new BaseStripableLogBlock(woodColor, log_stripped)); + bark = EndBlocks.registerBlock(name + "_bark", new StripableBarkBlock(woodColor, bark_stripped)); - planks = EndBlocks.registerBlock(name + "_planks", new BlockBase(materialPlanks)); - stairs = EndBlocks.registerBlock(name + "_stairs", new EndStairsBlock(planks)); - slab = EndBlocks.registerBlock(name + "_slab", new EndSlabBlock(planks)); - fence = EndBlocks.registerBlock(name + "_fence", new EndFenceBlock(planks)); - gate = EndBlocks.registerBlock(name + "_gate", new EndGateBlock(planks)); - button = EndBlocks.registerBlock(name + "_button", new EndWoodenButtonBlock(planks)); - pressurePlate = EndBlocks.registerBlock(name + "_plate", new EndWoodenPlateBlock(planks)); - trapdoor = EndBlocks.registerBlock(name + "_trapdoor", new EndTrapdoorBlock(planks)); - door = EndBlocks.registerBlock(name + "_door", new EndDoorBlock(planks)); + planks = EndBlocks.registerBlock(name + "_planks", new BaseBlock(materialPlanks)); + stairs = EndBlocks.registerBlock(name + "_stairs", new BaseStairsBlock(planks)); + slab = EndBlocks.registerBlock(name + "_slab", new BaseSlabBlock(planks)); + fence = EndBlocks.registerBlock(name + "_fence", new BaseFenceBlock(planks)); + gate = EndBlocks.registerBlock(name + "_gate", new BaseGateBlock(planks)); + button = EndBlocks.registerBlock(name + "_button", new BaseWoodenButtonBlock(planks)); + pressurePlate = EndBlocks.registerBlock(name + "_plate", new WoodenPressurePlateBlock(planks)); + trapdoor = EndBlocks.registerBlock(name + "_trapdoor", new BaseTrapdoorBlock(planks)); + door = EndBlocks.registerBlock(name + "_door", new BaseDoorBlock(planks)); - craftingTable = EndBlocks.registerBlock(name + "_crafting_table", new EndCraftingTableBlock(planks)); - ladder = EndBlocks.registerBlock(name + "_ladder", new EndLadderBlock(planks)); - sign = EndBlocks.registerBlock(name + "_sign", new EndSignBlock(planks)); + craftingTable = EndBlocks.registerBlock(name + "_crafting_table", new BaseCraftingTableBlock(planks)); + ladder = EndBlocks.registerBlock(name + "_ladder", new BaseLadderBlock(planks)); + sign = EndBlocks.registerBlock(name + "_sign", new BaseSignBlock(planks)); - chest = EndBlocks.registerBlock(name + "_chest", new EndChestBlock(planks)); - barrel = EndBlocks.registerBlock(name + "_barrel", new EndBarrelBlock(planks)); - shelf = EndBlocks.registerBlock(name + "_bookshelf", new EndBookshelfBlock(planks)); - composter = EndBlocks.registerBlock(name + "_composter", new EndComposterBlock(planks)); + chest = EndBlocks.registerBlock(name + "_chest", new BaseFenceBlock(planks)); + barrel = EndBlocks.registerBlock(name + "_barrel", new BaseBarrelBlock(planks)); + shelf = EndBlocks.registerBlock(name + "_bookshelf", new BaseBookshelfBlock(planks)); + composter = EndBlocks.registerBlock(name + "_composter", new BaseComposterBlock(planks)); // Recipes // GridRecipe.make(name + "_planks", planks).setOutputCount(4).setList("#").addMaterial('#', log, bark, log_stripped, bark_stripped).setGroup("end_planks").build(); diff --git a/src/main/java/ru/betterend/entity/SilkMothEntity.java b/src/main/java/ru/betterend/entity/SilkMothEntity.java index c71099dd..4c54e387 100644 --- a/src/main/java/ru/betterend/entity/SilkMothEntity.java +++ b/src/main/java/ru/betterend/entity/SilkMothEntity.java @@ -49,7 +49,7 @@ import net.minecraft.world.phys.Vec3; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.betterend.BetterEnd; -import ru.betterend.blocks.BlockProperties; +import ru.betterend.blocks.EndBlockProperties; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndEntities; import ru.betterend.registry.EndItems; @@ -289,14 +289,14 @@ public class SilkMothEntity extends Animal implements FlyingAnimal { if (dx + dy + dz < 1) { BlockState state = SilkMothEntity.this.level.getBlockState(hivePos); if (state.is(EndBlocks.SILK_MOTH_NEST) || state.is(EndBlocks.SILK_MOTH_HIVE)) { - int fullness = state.getValue(BlockProperties.FULLNESS); + int fullness = state.getValue(EndBlockProperties.FULLNESS); boolean isHive = state.is(EndBlocks.SILK_MOTH_HIVE); if (fullness < 3 && (isHive || SilkMothEntity.this.random.nextBoolean())) { fullness += isHive ? MHelper.randRange(1, 2, random) : 1; if (fullness > 3) { fullness = 3; } - BlocksHelper.setWithUpdate(SilkMothEntity.this.hiveWorld, SilkMothEntity.this.hivePos, state.setValue(BlockProperties.FULLNESS, fullness)); + BlocksHelper.setWithUpdate(SilkMothEntity.this.hiveWorld, SilkMothEntity.this.hivePos, state.setValue(EndBlockProperties.FULLNESS, fullness)); } SilkMothEntity.this.level.playSound(null, SilkMothEntity.this.entrance, SoundEvents.BEEHIVE_ENTER, SoundSource.BLOCKS, 1, 1); SilkMothEntity.this.remove(); diff --git a/src/main/java/ru/betterend/integration/byg/BYGBlocks.java b/src/main/java/ru/betterend/integration/byg/BYGBlocks.java index 911ea1ea..18ceff7a 100644 --- a/src/main/java/ru/betterend/integration/byg/BYGBlocks.java +++ b/src/main/java/ru/betterend/integration/byg/BYGBlocks.java @@ -1,15 +1,15 @@ package ru.betterend.integration.byg; import net.minecraft.world.level.block.Block; +import ru.bclib.blocks.BaseVineBlock; import ru.betterend.blocks.basis.EndWallPlantBlock; -import ru.betterend.blocks.basis.VineBlock; import ru.betterend.registry.EndBlocks; public class BYGBlocks { public static final Block IVIS_MOSS = EndBlocks.registerBlock("ivis_moss", new EndWallPlantBlock()); public static final Block NIGHTSHADE_MOSS = EndBlocks.registerBlock("nightshade_moss", new EndWallPlantBlock()); - public static final Block IVIS_VINE = EndBlocks.registerBlock("ivis_vine", new VineBlock()); + public static final Block IVIS_VINE = EndBlocks.registerBlock("ivis_vine", new BaseVineBlock()); public static void register() {} } diff --git a/src/main/java/ru/betterend/integration/rei/REIPlugin.java b/src/main/java/ru/betterend/integration/rei/REIPlugin.java index fb9d4a21..65ed2340 100644 --- a/src/main/java/ru/betterend/integration/rei/REIPlugin.java +++ b/src/main/java/ru/betterend/integration/rei/REIPlugin.java @@ -1,10 +1,6 @@ package ru.betterend.integration.rei; -import java.util.List; -import java.util.stream.Collectors; - import com.google.common.collect.Lists; - import me.shedaniel.rei.api.EntryStack; import me.shedaniel.rei.api.RecipeHelper; import me.shedaniel.rei.api.plugins.REIPluginV0; @@ -15,14 +11,17 @@ import net.fabricmc.fabric.impl.content.registry.FuelRegistryImpl; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.BlastingRecipe; import net.minecraft.world.level.block.Blocks; +import ru.bclib.blocks.BaseFurnaceBlock; import ru.betterend.BetterEnd; import ru.betterend.blocks.basis.EndAnvilBlock; -import ru.betterend.blocks.basis.EndFurnaceBlock; import ru.betterend.recipe.builders.AlloyingRecipe; import ru.betterend.recipe.builders.AnvilRecipe; import ru.betterend.recipe.builders.InfusionRecipe; import ru.betterend.registry.EndBlocks; +import java.util.List; +import java.util.stream.Collectors; + @Environment(EnvType.CLIENT) public class REIPlugin implements REIPluginV0 { @@ -83,7 +82,7 @@ public class REIPlugin implements REIPluginV0 { anvils.add(0, EntryStack.create(Blocks.ANVIL)); ANVILS = anvils.toArray(new EntryStack[0]); FURNACES = Lists.newArrayList(EntryStack.ofItems(EndBlocks.getModBlocks().stream() - .filter(EndFurnaceBlock.class::isInstance).collect(Collectors.toList()))) + .filter(BaseFurnaceBlock.class::isInstance).collect(Collectors.toList()))) .toArray(new EntryStack[0]); } } diff --git a/src/main/java/ru/betterend/interfaces/IColorProvider.java b/src/main/java/ru/betterend/interfaces/IColorProvider.java index f8b5ba51..12d7968a 100644 --- a/src/main/java/ru/betterend/interfaces/IColorProvider.java +++ b/src/main/java/ru/betterend/interfaces/IColorProvider.java @@ -5,6 +5,5 @@ import net.minecraft.client.color.item.ItemColor; public interface IColorProvider { BlockColor getProvider(); - ItemColor getItemProvider(); } diff --git a/src/main/java/ru/betterend/mixin/common/AnvilBlockMixin.java b/src/main/java/ru/betterend/mixin/common/AnvilBlockMixin.java deleted file mode 100644 index fa27a791..00000000 --- a/src/main/java/ru/betterend/mixin/common/AnvilBlockMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package ru.betterend.mixin.common; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import net.minecraft.world.level.block.AnvilBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.IntegerProperty; -import ru.betterend.blocks.basis.EndAnvilBlock; - -@Mixin(AnvilBlock.class) -public class AnvilBlockMixin { - @Inject(method = "damage", at = @At("HEAD"), cancellable = true) - private static void be_damage(BlockState fallingState, CallbackInfoReturnable info) { - if (fallingState.getBlock() instanceof EndAnvilBlock) { - IntegerProperty destructionProperty = ((EndAnvilBlock) fallingState.getBlock()).getDestructionProperty(); - int destruction = fallingState.getValue(destructionProperty); - try { - BlockState state = fallingState.setValue(destructionProperty, destruction + 1); - info.setReturnValue(state); - } catch (Exception ex) { - info.setReturnValue(null); - } - } - } -} diff --git a/src/main/java/ru/betterend/mixin/common/AnvilMenuMixin.java b/src/main/java/ru/betterend/mixin/common/AnvilMenuMixin.java index cdd7f400..3e139278 100644 --- a/src/main/java/ru/betterend/mixin/common/AnvilMenuMixin.java +++ b/src/main/java/ru/betterend/mixin/common/AnvilMenuMixin.java @@ -74,7 +74,7 @@ public abstract class AnvilMenuMixin extends ItemCombinerMenu implements AnvilSc access.execute((world, blockPos) -> { BlockState anvilState = world.getBlockState(blockPos); if (!player.abilities.instabuild && anvilState.is(BlockTags.ANVIL) && player.getRandom().nextFloat() < 0.12F) { - BlockState landingState = AnvilBlock.damage(anvilState); + BlockState landingState = EndAnvilBlock.applyDamage(anvilState); if (landingState == null) { world.removeBlock(blockPos, false); world.levelEvent(1029, blockPos, 0); diff --git a/src/main/java/ru/betterend/mixin/common/PlayerMixin.java b/src/main/java/ru/betterend/mixin/common/PlayerMixin.java index 3512ec0f..e8ee2a4c 100644 --- a/src/main/java/ru/betterend/mixin/common/PlayerMixin.java +++ b/src/main/java/ru/betterend/mixin/common/PlayerMixin.java @@ -20,12 +20,11 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; import ru.betterend.interfaces.FallFlyingItem; -import ru.betterend.item.ArmoredElytra; import ru.betterend.registry.EndBlocks; @Mixin(Player.class) diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 6d3f474b..7b26bdba 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -1,10 +1,5 @@ package ru.betterend.registry; -import java.util.List; -import java.util.stream.Collectors; - -import org.jetbrains.annotations.NotNull; - import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; @@ -12,42 +7,22 @@ import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.material.MaterialColor; -import ru.bclib.blocks.BaseBarrelBlock; -import ru.bclib.blocks.BaseChestBlock; -import ru.bclib.blocks.BaseFurnaceBlock; -import ru.bclib.blocks.BaseSignBlock; +import org.jetbrains.annotations.NotNull; +import ru.bclib.blocks.*; import ru.bclib.registry.BaseBlockEntities; import ru.bclib.registry.BlocksRegistry; import ru.betterend.BetterEnd; import ru.betterend.blocks.*; -import ru.betterend.blocks.basis.EndCropBlock; -import ru.betterend.blocks.basis.EndFurnaceBlock; -import ru.betterend.blocks.basis.EndLeavesBlock; -import ru.betterend.blocks.basis.EndOreBlock; -import ru.betterend.blocks.basis.EndPathBlock; -import ru.betterend.blocks.basis.EndPillarBlock; -import ru.betterend.blocks.basis.EndSlabBlock; -import ru.betterend.blocks.basis.EndStairsBlock; -import ru.betterend.blocks.basis.EndTerrainBlock; -import ru.betterend.blocks.basis.EndUnderwaterWallPlantBlock; -import ru.betterend.blocks.basis.EndWallPlantBlock; -import ru.betterend.blocks.basis.FurBlock; -import ru.betterend.blocks.basis.SimpleLeavesBlock; -import ru.betterend.blocks.basis.StalactiteBlock; -import ru.betterend.blocks.basis.StoneLanternBlock; -import ru.betterend.blocks.basis.TripleTerrainBlock; -import ru.betterend.blocks.basis.VineBlock; -import ru.betterend.blocks.basis.WallMushroomBlock; -import ru.betterend.blocks.complex.ColoredMaterial; -import ru.betterend.blocks.complex.CrystalSubblocksMaterial; -import ru.betterend.blocks.complex.MetalMaterial; -import ru.betterend.blocks.complex.StoneMaterial; -import ru.betterend.blocks.complex.WoodenMaterial; +import ru.betterend.blocks.basis.*; +import ru.betterend.blocks.complex.*; import ru.betterend.config.Configs; import ru.betterend.item.material.EndArmorMaterial; import ru.betterend.item.material.EndToolMaterial; import ru.betterend.tab.CreativeTabs; +import java.util.List; +import java.util.stream.Collectors; + @SuppressWarnings("unused") public class EndBlocks extends BlocksRegistry { // Terrain // @@ -55,7 +30,7 @@ public class EndBlocks extends BlocksRegistry { public static final Block END_MYCELIUM = registerBlock("end_mycelium", new EndTerrainBlock(MaterialColor.COLOR_LIGHT_BLUE)); public static final Block END_MOSS = registerBlock("end_moss", new EndTerrainBlock(MaterialColor.COLOR_CYAN)); public static final Block CHORUS_NYLIUM = registerBlock("chorus_nylium", new EndTerrainBlock(MaterialColor.COLOR_MAGENTA)); - public static final Block CAVE_MOSS = registerBlock("cave_moss", new TripleTerrainBlock(MaterialColor.COLOR_PURPLE)); + public static final Block CAVE_MOSS = registerBlock("cave_moss", new EndTripleTerrain(MaterialColor.COLOR_PURPLE)); public static final Block CRYSTAL_MOSS = registerBlock("crystal_moss", new EndTerrainBlock(MaterialColor.COLOR_PINK)); public static final Block SHADOW_GRASS = registerBlock("shadow_grass", new ShadowGrassBlock()); public static final Block PINK_MOSS = registerBlock("pink_moss", new EndTerrainBlock(MaterialColor.COLOR_PINK)); @@ -63,7 +38,7 @@ public class EndBlocks extends BlocksRegistry { public static final Block JUNGLE_MOSS = registerBlock("jungle_moss", new EndTerrainBlock(MaterialColor.COLOR_GREEN)); public static final Block SANGNUM = registerBlock("sangnum", new EndTerrainBlock(MaterialColor.COLOR_RED)); public static final Block RUTISCUS = registerBlock("rutiscus", new EndTerrainBlock(MaterialColor.COLOR_ORANGE)); - + // Roads // public static final Block END_MYCELIUM_PATH = registerBlock("end_mycelium_path", new EndPathBlock(END_MYCELIUM)); public static final Block END_MOSS_PATH = registerBlock("end_moss_path", new EndPathBlock(END_MOSS)); @@ -78,9 +53,9 @@ public class EndBlocks extends BlocksRegistry { public static final Block RUTISCUS_PATH = registerBlock("rutiscus_path", new EndPathBlock(RUTISCUS)); public static final Block MOSSY_OBSIDIAN = registerBlock("mossy_obsidian", new MossyObsidian()); - public static final Block DRAGON_BONE_BLOCK = registerBlock("dragon_bone_block", new EndPillarBlock(Blocks.BONE_BLOCK)); - public static final Block DRAGON_BONE_STAIRS = registerBlock("dragon_bone_stairs", new EndStairsBlock(DRAGON_BONE_BLOCK)); - public static final Block DRAGON_BONE_SLAB = registerBlock("dragon_bone_slab", new EndSlabBlock(DRAGON_BONE_BLOCK)); + public static final Block DRAGON_BONE_BLOCK = registerBlock("dragon_bone_block", new BaseRotatedPillarBlock(Blocks.BONE_BLOCK)); + public static final Block DRAGON_BONE_STAIRS = registerBlock("dragon_bone_stairs", new BaseStairsBlock(DRAGON_BONE_BLOCK)); + public static final Block DRAGON_BONE_SLAB = registerBlock("dragon_bone_slab", new BaseSlabBlock(DRAGON_BONE_BLOCK)); public static final Block MOSSY_DRAGON_BONE = registerBlock("mossy_dragon_bone", new MossyDragonBoneBlock()); // Rocks // @@ -122,7 +97,7 @@ public class EndBlocks extends BlocksRegistry { public static final WoodenMaterial MOSSY_GLOWSHROOM = new WoodenMaterial("mossy_glowshroom", MaterialColor.COLOR_GRAY, MaterialColor.WOOD); public static final Block PYTHADENDRON_SAPLING = registerBlock("pythadendron_sapling", new PythadendronSaplingBlock()); - public static final Block PYTHADENDRON_LEAVES = registerBlock("pythadendron_leaves", new EndLeavesBlock(PYTHADENDRON_SAPLING, MaterialColor.COLOR_MAGENTA)); + public static final Block PYTHADENDRON_LEAVES = registerBlock("pythadendron_leaves", new BaseLeavesBlock(PYTHADENDRON_SAPLING, MaterialColor.COLOR_MAGENTA)); public static final WoodenMaterial PYTHADENDRON = new WoodenMaterial("pythadendron", MaterialColor.COLOR_MAGENTA, MaterialColor.COLOR_PURPLE); public static final Block END_LOTUS_SEED = registerBlock("end_lotus_seed", new EndLotusSeedBlock()); @@ -132,15 +107,15 @@ public class EndBlocks extends BlocksRegistry { public static final WoodenMaterial END_LOTUS = new WoodenMaterial("end_lotus", MaterialColor.COLOR_LIGHT_BLUE, MaterialColor.COLOR_CYAN); public static final Block LACUGROVE_SAPLING = registerBlock("lacugrove_sapling", new LacugroveSaplingBlock()); - public static final Block LACUGROVE_LEAVES = registerBlock("lacugrove_leaves", new EndLeavesBlock(LACUGROVE_SAPLING, MaterialColor.COLOR_CYAN)); + public static final Block LACUGROVE_LEAVES = registerBlock("lacugrove_leaves", new BaseLeavesBlock(LACUGROVE_SAPLING, MaterialColor.COLOR_CYAN)); public static final WoodenMaterial LACUGROVE = new WoodenMaterial("lacugrove", MaterialColor.COLOR_BROWN, MaterialColor.COLOR_YELLOW); public static final Block DRAGON_TREE_SAPLING = registerBlock("dragon_tree_sapling", new DragonTreeSaplingBlock()); - public static final Block DRAGON_TREE_LEAVES = registerBlock("dragon_tree_leaves", new EndLeavesBlock(DRAGON_TREE_SAPLING, MaterialColor.COLOR_MAGENTA)); + public static final Block DRAGON_TREE_LEAVES = registerBlock("dragon_tree_leaves", new BaseLeavesBlock(DRAGON_TREE_SAPLING, MaterialColor.COLOR_MAGENTA)); public static final WoodenMaterial DRAGON_TREE = new WoodenMaterial("dragon_tree", MaterialColor.COLOR_BLACK, MaterialColor.COLOR_MAGENTA); public static final Block TENANEA_SAPLING = registerBlock("tenanea_sapling", new TenaneaSaplingBlock()); - public static final Block TENANEA_LEAVES = registerBlock("tenanea_leaves", new EndLeavesBlock(TENANEA_SAPLING, MaterialColor.COLOR_PINK)); + public static final Block TENANEA_LEAVES = registerBlock("tenanea_leaves", new BaseLeavesBlock(TENANEA_SAPLING, MaterialColor.COLOR_PINK)); public static final Block TENANEA_FLOWERS = registerBlock("tenanea_flowers", new TenaneaFlowersBlock()); public static final Block TENANEA_OUTER_LEAVES = registerBlock("tenanea_outer_leaves", new FurBlock(TENANEA_SAPLING, 32)); public static final WoodenMaterial TENANEA = new WoodenMaterial("tenanea", MaterialColor.COLOR_BROWN, MaterialColor.COLOR_PINK); @@ -159,7 +134,7 @@ public class EndBlocks extends BlocksRegistry { public static final WoodenMaterial JELLYSHROOM = new WoodenMaterial("jellyshroom", MaterialColor.COLOR_PURPLE, MaterialColor.COLOR_LIGHT_BLUE); public static final Block LUCERNIA_SAPLING = registerBlock("lucernia_sapling", new LucerniaSaplingBlock()); - public static final Block LUCERNIA_LEAVES = registerBlock("lucernia_leaves", new EndLeavesBlock(LUCERNIA_SAPLING, MaterialColor.COLOR_ORANGE)); + public static final Block LUCERNIA_LEAVES = registerBlock("lucernia_leaves", new BaseLeavesBlock(LUCERNIA_SAPLING, MaterialColor.COLOR_ORANGE)); public static final Block LUCERNIA_OUTER_LEAVES = registerBlock("lucernia_outer_leaves", new FurBlock(LUCERNIA_SAPLING, 32)); public static final WoodenMaterial LUCERNIA = new WoodenMaterial("lucernia", MaterialColor.COLOR_ORANGE, MaterialColor.COLOR_ORANGE); @@ -217,14 +192,14 @@ public class EndBlocks extends BlocksRegistry { public static final Block NEON_CACTUS = registerBlock("neon_cactus", new NeonCactusPlantBlock()); public static final Block NEON_CACTUS_BLOCK = registerBlock("neon_cactus_block", new NeonCactusBlock()); - public static final Block NEON_CACTUS_BLOCK_STAIRS = registerBlock("neon_cactus_stairs", new EndStairsBlock(NEON_CACTUS_BLOCK)); - public static final Block NEON_CACTUS_BLOCK_SLAB = registerBlock("neon_cactus_slab", new EndSlabBlock(NEON_CACTUS_BLOCK)); + public static final Block NEON_CACTUS_BLOCK_STAIRS = registerBlock("neon_cactus_stairs", new BaseStairsBlock(NEON_CACTUS_BLOCK)); + public static final Block NEON_CACTUS_BLOCK_SLAB = registerBlock("neon_cactus_slab", new BaseSlabBlock(NEON_CACTUS_BLOCK)); // Crops public static final Block SHADOW_BERRY = registerBlock("shadow_berry", new ShadowBerryBlock()); - public static final Block BLOSSOM_BERRY = registerBlock("blossom_berry_seed", new EndCropBlock(EndItems.BLOSSOM_BERRY, PINK_MOSS)); - public static final Block AMBER_ROOT = registerBlock("amber_root_seed", new EndCropBlock(EndItems.AMBER_ROOT_RAW, AMBER_MOSS)); - public static final Block CHORUS_MUSHROOM = registerBlock("chorus_mushroom_seed", new EndCropBlock(EndItems.CHORUS_MUSHROOM_RAW, CHORUS_NYLIUM)); + public static final Block BLOSSOM_BERRY = registerBlock("blossom_berry_seed", new BaseCropBlock(EndItems.BLOSSOM_BERRY, PINK_MOSS)); + public static final Block AMBER_ROOT = registerBlock("amber_root_seed", new BaseCropBlock(EndItems.AMBER_ROOT_RAW, AMBER_MOSS)); + public static final Block CHORUS_MUSHROOM = registerBlock("chorus_mushroom_seed", new BaseCropBlock(EndItems.CHORUS_MUSHROOM_RAW, CHORUS_NYLIUM)); //public static final Block PEARLBERRY = registerBlock("pearlberry_seed", new EndCropBlock(EndItems.BLOSSOM_BERRY, END_MOSS, END_MYCELIUM)); public static final Block CAVE_PUMPKIN_SEED = registerBlock("cave_pumpkin_seed", new CavePumpkinVineBlock()); public static final Block CAVE_PUMPKIN = registerBlock("cave_pumpkin", new CavePumpkinBlock()); @@ -258,8 +233,8 @@ public class EndBlocks extends BlocksRegistry { public static final Block NEEDLEGRASS = registerBlock("needlegrass", new NeedlegrassBlock()); // Wall Plants // - public static final Block PURPLE_POLYPORE = registerBlock("purple_polypore", new WallMushroomBlock(13)); - public static final Block AURANT_POLYPORE = registerBlock("aurant_polypore", new WallMushroomBlock(13)); + public static final Block PURPLE_POLYPORE = registerBlock("purple_polypore", new EndWallMushroom(13)); + public static final Block AURANT_POLYPORE = registerBlock("aurant_polypore", new EndWallMushroom(13)); public static final Block TAIL_MOSS = registerBlock("tail_moss", new EndWallPlantBlock()); public static final Block CYAN_MOSS = registerBlock("cyan_moss", new EndWallPlantBlock()); public static final Block TWISTED_MOSS = registerBlock("twisted_moss", new EndWallPlantBlock()); @@ -269,13 +244,13 @@ public class EndBlocks extends BlocksRegistry { public static final Block RUSCUS = registerBlock("ruscus", new EndWallPlantBlock()); // Vines // - public static final Block DENSE_VINE = registerBlock("dense_vine", new VineBlock(15, true)); - public static final Block TWISTED_VINE = registerBlock("twisted_vine", new VineBlock()); + public static final Block DENSE_VINE = registerBlock("dense_vine", new BaseVineBlock(15, true)); + public static final Block TWISTED_VINE = registerBlock("twisted_vine", new BaseVineBlock()); public static final Block BULB_VINE_SEED = registerBlock("bulb_vine_seed", new BulbVineSeedBlock()); public static final Block BULB_VINE = registerBlock("bulb_vine", new BulbVineBlock()); - public static final Block JUNGLE_VINE = registerBlock("jungle_vine", new VineBlock()); - public static final Block RUBINEA = registerBlock("rubinea", new VineBlock()); - public static final Block MAGNULA = registerBlock("magnula", new VineBlock()); + public static final Block JUNGLE_VINE = registerBlock("jungle_vine", new BaseVineBlock()); + public static final Block RUBINEA = registerBlock("rubinea", new BaseVineBlock()); + public static final Block MAGNULA = registerBlock("magnula", new BaseVineBlock()); public static final Block FILALUX = registerBlock("filalux", new FilaluxBlock()); public static final Block FILALUX_WINGS = registerBlock("filalux_wings", new FilaluxWingsBlock()); public static final Block FILALUX_LANTERN = registerBlock("filalux_lantern", new FilaluxLanternBlock()); @@ -285,8 +260,8 @@ public class EndBlocks extends BlocksRegistry { public static final Block SILK_MOTH_HIVE = registerBlock("silk_moth_hive", new SilkMothHiveBlock()); // Ores // - public static final Block ENDER_ORE = registerBlock("ender_ore", new EndOreBlock(EndItems.ENDER_SHARD, 1, 3, 5)); - public static final Block AMBER_ORE = registerBlock("amber_ore", new EndOreBlock(EndItems.RAW_AMBER, 1, 2, 4)); + public static final Block ENDER_ORE = registerBlock("ender_ore", new BaseOreBlock(EndItems.ENDER_SHARD, 1, 3, 5)); + public static final Block AMBER_ORE = registerBlock("amber_ore", new BaseOreBlock(EndItems.RAW_AMBER, 1, 2, 4)); // Materials // public static final MetalMaterial THALLASIUM = MetalMaterial.makeNormal("thallasium", MaterialColor.COLOR_BLUE, EndToolMaterial.THALLASIUM, EndArmorMaterial.THALLASIUM); @@ -319,7 +294,7 @@ public class EndBlocks extends BlocksRegistry { public static final Block GOLD_CHANDELIER = EndBlocks.registerBlock("gold_chandelier", new ChandelierBlock(Blocks.GOLD_BLOCK)); // Blocks With Entity // - public static final Block END_STONE_FURNACE = registerBlock("end_stone_furnace", new EndFurnaceBlock(Blocks.END_STONE)); + public static final Block END_STONE_FURNACE = registerBlock("end_stone_furnace", new BaseFurnaceBlock(Blocks.END_STONE)); public static final Block END_STONE_SMELTER = registerBlock("end_stone_smelter", new EndStoneSmelter()); public static final Block ETERNAL_PEDESTAL = registerBlock("eternal_pedestal", new EternalPedestal()); public static final Block INFUSION_PEDESTAL = registerBlock("infusion_pedestal", new InfusionPedestal()); diff --git a/src/main/java/ru/betterend/registry/EndTags.java b/src/main/java/ru/betterend/registry/EndTags.java index 31276600..db8b759e 100644 --- a/src/main/java/ru/betterend/registry/EndTags.java +++ b/src/main/java/ru/betterend/registry/EndTags.java @@ -1,10 +1,6 @@ package ru.betterend.registry; -import java.util.List; -import java.util.function.Supplier; - import com.google.common.collect.Lists; - import net.fabricmc.fabric.api.tag.TagRegistry; import net.fabricmc.fabric.impl.tool.attribute.ToolManagerImpl; import net.fabricmc.fabric.impl.tool.attribute.handlers.ModdedToolsVanillaBlocksToolHandler; @@ -24,15 +20,18 @@ import net.minecraft.world.level.block.LeavesBlock; import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderConfiguration; import net.minecraft.world.level.material.Material; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BaseVineBlock; +import ru.bclib.blocks.SimpleLeavesBlock; import ru.bclib.util.TagHelper; import ru.betterend.BetterEnd; import ru.betterend.blocks.basis.EndTerrainBlock; import ru.betterend.blocks.basis.PedestalBlock; -import ru.betterend.blocks.basis.SimpleLeavesBlock; -import ru.betterend.blocks.basis.VineBlock; import ru.betterend.item.tool.EndHammerItem; import ru.betterend.mixin.common.ComposterBlockAccessor; +import java.util.List; +import java.util.function.Supplier; + @SuppressWarnings("unused") public class EndTags { // Table with common (c) tags: @@ -91,7 +90,7 @@ public class EndTags { TagHelper.addTag(BlockTags.LEAVES, block); ComposterBlockAccessor.callAdd(0.3F, block); } - else if (block instanceof VineBlock) { + else if (block instanceof BaseVineBlock) { TagHelper.addTag(BlockTags.CLIMBABLE, block); } else if (block instanceof PedestalBlock) { diff --git a/src/main/java/ru/betterend/rituals/EternalRitual.java b/src/main/java/ru/betterend/rituals/EternalRitual.java index 995c3244..1d7ebbdc 100644 --- a/src/main/java/ru/betterend/rituals/EternalRitual.java +++ b/src/main/java/ru/betterend/rituals/EternalRitual.java @@ -37,8 +37,8 @@ import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.material.Material; +import ru.bclib.blocks.BlockProperties; import ru.betterend.BetterEnd; -import ru.betterend.blocks.BlockProperties; import ru.betterend.blocks.EndPortalBlock; import ru.betterend.blocks.RunedFlavolite; import ru.betterend.blocks.entities.EternalPedestalEntity; diff --git a/src/main/java/ru/betterend/util/BlockFixer.java b/src/main/java/ru/betterend/util/BlockFixer.java index bc73d332..fa6243bd 100644 --- a/src/main/java/ru/betterend/util/BlockFixer.java +++ b/src/main/java/ru/betterend/util/BlockFixer.java @@ -1,9 +1,6 @@ package ru.betterend.util; -import java.util.Set; - import com.google.common.collect.Sets; - import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -11,14 +8,16 @@ import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.FallingBlock; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BaseDoublePlantBlock; +import ru.bclib.blocks.BaseVineBlock; +import ru.bclib.blocks.StalactiteBlock; import ru.bclib.util.BlocksHelper; import ru.betterend.blocks.BlueVineBlock; -import ru.betterend.blocks.basis.DoublePlantBlock; import ru.betterend.blocks.basis.FurBlock; -import ru.betterend.blocks.basis.StalactiteBlock; -import ru.betterend.blocks.basis.VineBlock; import ru.betterend.registry.EndBlocks; +import java.util.Set; + public class BlockFixer { private static final MutableBlockPos POS = new MutableBlockPos(); private static final BlockState AIR = Blocks.AIR.defaultBlockState(); @@ -130,8 +129,8 @@ public class BlockFixer { } } // Vines - else if (state.getBlock() instanceof VineBlock) { - while (world.getBlockState(POS).getBlock() instanceof VineBlock) { + else if (state.getBlock() instanceof BaseVineBlock) { + while (world.getBlockState(POS).getBlock() instanceof BaseVineBlock) { BlocksHelper.setWithoutUpdate(world, POS, AIR); POS.setY(POS.getY() - 1); } @@ -178,7 +177,7 @@ public class BlockFixer { } } // Double plants - if (state.getBlock() instanceof DoublePlantBlock) { + if (state.getBlock() instanceof BaseDoublePlantBlock) { BlocksHelper.setWithoutUpdate(world, POS, AIR); POS.setY(POS.getY() + 1); BlocksHelper.setWithoutUpdate(world, POS, AIR); diff --git a/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java index 8a8d718a..0ac0206e 100644 --- a/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java +++ b/src/main/java/ru/betterend/world/biome/cave/LushAuroraCaveBiome.java @@ -2,10 +2,9 @@ package ru.betterend.world.biome.cave; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BlockProperties; import ru.bclib.world.biomes.BCLBiomeDef; import ru.betterend.BetterEnd; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; @@ -44,6 +43,6 @@ public class LushAuroraCaveBiome extends EndCaveBiome { @Override public BlockState getCeil(BlockPos pos) { - return EndBlocks.CAVE_MOSS.defaultBlockState().setValue(BlockProperties.TRIPLE_SHAPE, TripleShape.TOP); + return EndBlocks.CAVE_MOSS.defaultBlockState().setValue(BlockProperties.TRIPLE_SHAPE, BlockProperties.TripleShape.TOP); } } diff --git a/src/main/java/ru/betterend/world/features/CavePumpkinFeature.java b/src/main/java/ru/betterend/world/features/CavePumpkinFeature.java index b82c8e84..839f6120 100644 --- a/src/main/java/ru/betterend/world/features/CavePumpkinFeature.java +++ b/src/main/java/ru/betterend/world/features/CavePumpkinFeature.java @@ -9,7 +9,7 @@ import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConf import ru.bclib.api.TagAPI; import ru.bclib.util.BlocksHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.BlockProperties; +import ru.betterend.blocks.EndBlockProperties; import ru.betterend.registry.EndBlocks; public class CavePumpkinFeature extends DefaultFeature { @@ -23,10 +23,10 @@ public class CavePumpkinFeature extends DefaultFeature { int age = random.nextInt(4); BlocksHelper.setWithoutUpdate(world, pos, - EndBlocks.CAVE_PUMPKIN_SEED.defaultBlockState().setValue(BlockProperties.AGE, age)); + EndBlocks.CAVE_PUMPKIN_SEED.defaultBlockState().setValue(EndBlockProperties.AGE, age)); if (age > 1) { BlocksHelper.setWithoutUpdate(world, pos.below(), - EndBlocks.CAVE_PUMPKIN.defaultBlockState().setValue(BlockProperties.SMALL, age < 3)); + EndBlocks.CAVE_PUMPKIN.defaultBlockState().setValue(EndBlockProperties.SMALL, age < 3)); } return true; diff --git a/src/main/java/ru/betterend/world/features/DoublePlantFeature.java b/src/main/java/ru/betterend/world/features/DoublePlantFeature.java index 671413ce..2b02eef6 100644 --- a/src/main/java/ru/betterend/world/features/DoublePlantFeature.java +++ b/src/main/java/ru/betterend/world/features/DoublePlantFeature.java @@ -1,14 +1,14 @@ package ru.betterend.world.features; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BaseDoublePlantBlock; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.basis.DoublePlantBlock; + +import java.util.Random; public class DoublePlantFeature extends ScatterFeature { private final Block smallPlant; @@ -30,11 +30,11 @@ public class DoublePlantFeature extends ScatterFeature { @Override public void generate(WorldGenLevel world, Random random, BlockPos blockPos) { - if (plant instanceof DoublePlantBlock) { + if (plant instanceof BaseDoublePlantBlock) { int rot = random.nextInt(4); - BlockState state = plant.defaultBlockState().setValue(DoublePlantBlock.ROTATION, rot); + BlockState state = plant.defaultBlockState().setValue(BaseDoublePlantBlock.ROTATION, rot); BlocksHelper.setWithoutUpdate(world, blockPos, state); - BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(DoublePlantBlock.TOP, true)); + BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(BaseDoublePlantBlock.TOP, true)); } else { BlocksHelper.setWithoutUpdate(world, blockPos, plant); diff --git a/src/main/java/ru/betterend/world/features/EndLotusLeafFeature.java b/src/main/java/ru/betterend/world/features/EndLotusLeafFeature.java index 73690828..70dd13b7 100644 --- a/src/main/java/ru/betterend/world/features/EndLotusLeafFeature.java +++ b/src/main/java/ru/betterend/world/features/EndLotusLeafFeature.java @@ -1,18 +1,18 @@ package ru.betterend.world.features; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.BlockProperties.TripleShape; import ru.betterend.blocks.EndLotusLeafBlock; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class EndLotusLeafFeature extends ScatterFeature { public EndLotusLeafFeature(int radius) { super(radius); diff --git a/src/main/java/ru/betterend/world/features/FilaluxFeature.java b/src/main/java/ru/betterend/world/features/FilaluxFeature.java index e04647c2..4ba11617 100644 --- a/src/main/java/ru/betterend/world/features/FilaluxFeature.java +++ b/src/main/java/ru/betterend/world/features/FilaluxFeature.java @@ -1,18 +1,19 @@ package ru.betterend.world.features; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.betterend.blocks.EndBlockProperties; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class FilaluxFeature extends SkyScatterFeature { public FilaluxFeature() { super(10); diff --git a/src/main/java/ru/betterend/world/features/SilkMothNestFeature.java b/src/main/java/ru/betterend/world/features/SilkMothNestFeature.java index 361dd665..5d4a5b0a 100644 --- a/src/main/java/ru/betterend/world/features/SilkMothNestFeature.java +++ b/src/main/java/ru/betterend/world/features/SilkMothNestFeature.java @@ -1,7 +1,5 @@ package ru.betterend.world.features; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -12,11 +10,13 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import ru.bclib.blocks.BlockProperties; import ru.bclib.util.BlocksHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.BlockProperties; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class SilkMothNestFeature extends DefaultFeature { private static final MutableBlockPos POS = new MutableBlockPos(); @@ -26,10 +26,7 @@ public class SilkMothNestFeature extends DefaultFeature { state = world.getBlockState(pos); if ((state.isAir() || state.is(EndBlocks.TENANEA_OUTER_LEAVES)) && world.isEmptyBlock(pos.below())) { for (Direction dir : BlocksHelper.HORIZONTAL) { - if (world.getBlockState(pos.below().relative(dir)).getMaterial().blocksMotion()) { - return false; - } - return true; + return !world.getBlockState(pos.below().relative(dir)).getMaterial().blocksMotion(); } } } diff --git a/src/main/java/ru/betterend/world/features/SingleInvertedScatterFeature.java b/src/main/java/ru/betterend/world/features/SingleInvertedScatterFeature.java index baf13202..0592bf0d 100644 --- a/src/main/java/ru/betterend/world/features/SingleInvertedScatterFeature.java +++ b/src/main/java/ru/betterend/world/features/SingleInvertedScatterFeature.java @@ -1,15 +1,15 @@ package ru.betterend.world.features; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import ru.bclib.blocks.BaseAttachedBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.AttachedBlock; + +import java.util.Random; public class SingleInvertedScatterFeature extends InvertedScatterFeature { private final Block block; @@ -25,7 +25,7 @@ public class SingleInvertedScatterFeature extends InvertedScatterFeature { return false; } BlockState state = block.defaultBlockState(); - if (block instanceof AttachedBlock) { + if (block instanceof BaseAttachedBlock) { state = state.setValue(BlockStateProperties.FACING, Direction.DOWN); } return state.canSurvive(world, blockPos); @@ -34,7 +34,7 @@ public class SingleInvertedScatterFeature extends InvertedScatterFeature { @Override public void generate(WorldGenLevel world, Random random, BlockPos blockPos) { BlockState state = block.defaultBlockState(); - if (block instanceof AttachedBlock) { + if (block instanceof BaseAttachedBlock) { state = state.setValue(BlockStateProperties.FACING, Direction.DOWN); } BlocksHelper.setWithoutUpdate(world, blockPos, state); diff --git a/src/main/java/ru/betterend/world/features/SinglePlantFeature.java b/src/main/java/ru/betterend/world/features/SinglePlantFeature.java index 9fe6989f..1fb05b38 100644 --- a/src/main/java/ru/betterend/world/features/SinglePlantFeature.java +++ b/src/main/java/ru/betterend/world/features/SinglePlantFeature.java @@ -1,16 +1,16 @@ package ru.betterend.world.features; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BaseCropBlock; +import ru.bclib.blocks.BaseDoublePlantBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.DoublePlantBlock; -import ru.betterend.blocks.basis.EndCropBlock; import ru.betterend.blocks.basis.EndPlantWithAgeBlock; +import java.util.Random; + public class SinglePlantFeature extends ScatterFeature { private final Block plant; private final boolean rawHeightmap; @@ -51,14 +51,14 @@ public class SinglePlantFeature extends ScatterFeature { @Override public void generate(WorldGenLevel world, Random random, BlockPos blockPos) { - if (plant instanceof DoublePlantBlock) { + if (plant instanceof BaseDoublePlantBlock) { int rot = random.nextInt(4); - BlockState state = plant.defaultBlockState().setValue(DoublePlantBlock.ROTATION, rot); + BlockState state = plant.defaultBlockState().setValue(BaseDoublePlantBlock.ROTATION, rot); BlocksHelper.setWithoutUpdate(world, blockPos, state); - BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(DoublePlantBlock.TOP, true)); + BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(BaseDoublePlantBlock.TOP, true)); } - else if (plant instanceof EndCropBlock) { - BlockState state = plant.defaultBlockState().setValue(EndCropBlock.AGE, 3); + else if (plant instanceof BaseCropBlock) { + BlockState state = plant.defaultBlockState().setValue(BaseCropBlock.AGE, 3); BlocksHelper.setWithoutUpdate(world, blockPos, state); } else if (plant instanceof EndPlantWithAgeBlock) { diff --git a/src/main/java/ru/betterend/world/features/UnderwaterPlantFeature.java b/src/main/java/ru/betterend/world/features/UnderwaterPlantFeature.java index 7fdfc808..c0f0197c 100644 --- a/src/main/java/ru/betterend/world/features/UnderwaterPlantFeature.java +++ b/src/main/java/ru/betterend/world/features/UnderwaterPlantFeature.java @@ -1,13 +1,13 @@ package ru.betterend.world.features; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BaseDoublePlantBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.DoublePlantBlock; + +import java.util.Random; public class UnderwaterPlantFeature extends UnderwaterPlantScatter { private final Block plant; @@ -24,11 +24,11 @@ public class UnderwaterPlantFeature extends UnderwaterPlantScatter { @Override public void generate(WorldGenLevel world, Random random, BlockPos blockPos) { - if (plant instanceof DoublePlantBlock) { + if (plant instanceof BaseDoublePlantBlock) { int rot = random.nextInt(4); - BlockState state = plant.defaultBlockState().setValue(DoublePlantBlock.ROTATION, rot); + BlockState state = plant.defaultBlockState().setValue(BaseDoublePlantBlock.ROTATION, rot); BlocksHelper.setWithoutUpdate(world, blockPos, state); - BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(DoublePlantBlock.TOP, true)); + BlocksHelper.setWithoutUpdate(world, blockPos.above(), state.setValue(BaseDoublePlantBlock.TOP, true)); } else { BlocksHelper.setWithoutUpdate(world, blockPos, plant); diff --git a/src/main/java/ru/betterend/world/features/VineFeature.java b/src/main/java/ru/betterend/world/features/VineFeature.java index 92541968..4e59d592 100644 --- a/src/main/java/ru/betterend/world/features/VineFeature.java +++ b/src/main/java/ru/betterend/world/features/VineFeature.java @@ -1,15 +1,15 @@ package ru.betterend.world.features; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import ru.bclib.blocks.BaseVineBlock; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.blocks.basis.VineBlock; + +import java.util.Random; public class VineFeature extends InvertedScatterFeature { private final Block vineBlock; @@ -20,7 +20,7 @@ public class VineFeature extends InvertedScatterFeature { super(6); this.vineBlock = vineBlock; this.maxLength = maxLength; - this.vine = vineBlock instanceof VineBlock; + this.vine = vineBlock instanceof BaseVineBlock; } @Override @@ -46,7 +46,7 @@ public class VineFeature extends InvertedScatterFeature { private boolean canPlaceBlock(BlockState state, WorldGenLevel world, BlockPos blockPos) { if (vine) { - return ((VineBlock) vineBlock).canGenerate(state, world, blockPos); + return ((BaseVineBlock) vineBlock).canGenerate(state, world, blockPos); } else { return vineBlock.canSurvive(state, world, blockPos); diff --git a/src/main/java/ru/betterend/world/features/WallPlantFeature.java b/src/main/java/ru/betterend/world/features/WallPlantFeature.java index 978dd1d1..60ad0022 100644 --- a/src/main/java/ru/betterend/world/features/WallPlantFeature.java +++ b/src/main/java/ru/betterend/world/features/WallPlantFeature.java @@ -1,17 +1,17 @@ package ru.betterend.world.features; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import ru.bclib.blocks.BaseAttachedBlock; import ru.bclib.util.BlocksHelper; -import ru.betterend.blocks.basis.AttachedBlock; import ru.betterend.blocks.basis.EndWallPlantBlock; +import java.util.Random; + public class WallPlantFeature extends WallScatterFeature { private final Block block; @@ -26,7 +26,7 @@ public class WallPlantFeature extends WallScatterFeature { BlockState state = block.defaultBlockState().setValue(EndWallPlantBlock.FACING, dir); return block.canSurvive(state, world, pos); } - else if (block instanceof AttachedBlock) { + else if (block instanceof BaseAttachedBlock) { BlockState state = block.defaultBlockState().setValue(BlockStateProperties.FACING, dir); return block.canSurvive(state, world, pos); } @@ -39,7 +39,7 @@ public class WallPlantFeature extends WallScatterFeature { if (block instanceof EndWallPlantBlock) { state = state.setValue(EndWallPlantBlock.FACING, dir); } - else if (block instanceof AttachedBlock) { + else if (block instanceof BaseAttachedBlock) { state = state.setValue(BlockStateProperties.FACING, dir); } BlocksHelper.setWithoutUpdate(world, pos, state); diff --git a/src/main/java/ru/betterend/world/features/bushes/LargeAmaranitaFeature.java b/src/main/java/ru/betterend/world/features/bushes/LargeAmaranitaFeature.java index b133d5a5..e50318ca 100644 --- a/src/main/java/ru/betterend/world/features/bushes/LargeAmaranitaFeature.java +++ b/src/main/java/ru/betterend/world/features/bushes/LargeAmaranitaFeature.java @@ -1,7 +1,5 @@ package ru.betterend.world.features.bushes; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -10,13 +8,15 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; import ru.betterend.registry.EndBlocks; +import java.util.Random; + public class LargeAmaranitaFeature extends DefaultFeature { @Override public boolean place(WorldGenLevel world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, diff --git a/src/main/java/ru/betterend/world/features/bushes/Lumecorn.java b/src/main/java/ru/betterend/world/features/bushes/Lumecorn.java index c70ce7d0..ec9b0682 100644 --- a/src/main/java/ru/betterend/world/features/bushes/Lumecorn.java +++ b/src/main/java/ru/betterend/world/features/bushes/Lumecorn.java @@ -13,7 +13,7 @@ import ru.bclib.api.TagAPI; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.BlockProperties.LumecornShape; +import ru.betterend.blocks.EndBlockProperties.LumecornShape; import ru.betterend.blocks.LumecornBlock; import ru.betterend.registry.EndBlocks; diff --git a/src/main/java/ru/betterend/world/features/bushes/TenaneaBushFeature.java b/src/main/java/ru/betterend/world/features/bushes/TenaneaBushFeature.java index ba11f10d..49cfadea 100644 --- a/src/main/java/ru/betterend/world/features/bushes/TenaneaBushFeature.java +++ b/src/main/java/ru/betterend/world/features/bushes/TenaneaBushFeature.java @@ -1,11 +1,6 @@ package ru.betterend.world.features.bushes; -import java.util.List; -import java.util.Random; -import java.util.function.Function; - import com.google.common.collect.Lists; - import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -16,6 +11,8 @@ import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFScale3D; @@ -25,12 +22,14 @@ import ru.bclib.sdf.primitive.SDFSphere; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; import ru.betterend.blocks.basis.FurBlock; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; +import java.util.List; +import java.util.Random; +import java.util.function.Function; + public class TenaneaBushFeature extends DefaultFeature { private static final Function REPLACE; private static final Direction[] DIRECTIONS = Direction.values(); @@ -49,12 +48,10 @@ public class TenaneaBushFeature extends DefaultFeature { BlockState leaves = EndBlocks.TENANEA_LEAVES.defaultBlockState(); SDF sphere = new SDFSphere().setRadius(radius).setBlock(leaves); sphere = new SDFScale3D().setScale(1, 0.75F, 1).setSource(sphere); - sphere = new SDFDisplacement().setFunction((vec) -> { - return (float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 3; - }).setSource(sphere); - sphere = new SDFDisplacement().setFunction((vec) -> { - return MHelper.randRange(-2F, 2F, random); - }).setSource(sphere); + sphere = new SDFDisplacement().setFunction((vec) -> + (float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 3).setSource(sphere); + sphere = new SDFDisplacement().setFunction((vec) -> + MHelper.randRange(-2F, 2F, random)).setSource(sphere); sphere = new SDFSubtraction().setSourceA(sphere) .setSourceB(new SDFTranslate().setTranslate(0, -radius, 0).setSource(sphere)); sphere.setReplaceFunction(REPLACE); diff --git a/src/main/java/ru/betterend/world/features/terrain/StalactiteFeature.java b/src/main/java/ru/betterend/world/features/terrain/StalactiteFeature.java index 1e5ce51a..e6b737d9 100644 --- a/src/main/java/ru/betterend/world/features/terrain/StalactiteFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/StalactiteFeature.java @@ -1,7 +1,5 @@ package ru.betterend.world.features.terrain; -import java.util.Random; - import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.util.Mth; @@ -12,9 +10,11 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.StalactiteBlock; import ru.bclib.util.BlocksHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.basis.StalactiteBlock; + +import java.util.Random; public class StalactiteFeature extends DefaultFeature { private final boolean ceiling; diff --git a/src/main/java/ru/betterend/world/features/terrain/SulphurHillFeature.java b/src/main/java/ru/betterend/world/features/terrain/SulphurHillFeature.java index 87c86ced..713e90d0 100644 --- a/src/main/java/ru/betterend/world/features/terrain/SulphurHillFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/SulphurHillFeature.java @@ -10,10 +10,11 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import ru.bclib.blocks.BlockProperties; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.BlockProperties; +import ru.betterend.blocks.EndBlockProperties; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; diff --git a/src/main/java/ru/betterend/world/features/terrain/SulphuricCaveFeature.java b/src/main/java/ru/betterend/world/features/terrain/SulphuricCaveFeature.java index e562b685..a314095b 100644 --- a/src/main/java/ru/betterend/world/features/terrain/SulphuricCaveFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/SulphuricCaveFeature.java @@ -20,7 +20,7 @@ import ru.bclib.api.TagAPI; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.BlockProperties; +import ru.betterend.blocks.EndBlockProperties; import ru.betterend.blocks.SulphurCrystalBlock; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; @@ -177,7 +177,7 @@ public class SulphuricCaveFeature extends DefaultFeature { private void placeBrimstone(WorldGenLevel world, BlockPos pos, Random random) { BlockState state = getBrimstone(world, pos); BlocksHelper.setWithoutUpdate(world, pos, state); - if (state.getValue(BlockProperties.ACTIVE)) { + if (state.getValue(EndBlockProperties.ACTIVE)) { makeShards(world, pos, random); } } @@ -185,7 +185,7 @@ public class SulphuricCaveFeature extends DefaultFeature { private BlockState getBrimstone(WorldGenLevel world, BlockPos pos) { for (Direction dir : BlocksHelper.DIRECTIONS) { if (world.getBlockState(pos.relative(dir)).is(Blocks.WATER)) { - return EndBlocks.BRIMSTONE.defaultBlockState().setValue(BlockProperties.ACTIVE, true); + return EndBlocks.BRIMSTONE.defaultBlockState().setValue(EndBlockProperties.ACTIVE, true); } } return EndBlocks.BRIMSTONE.defaultBlockState(); diff --git a/src/main/java/ru/betterend/world/features/terrain/SulphuricLakeFeature.java b/src/main/java/ru/betterend/world/features/terrain/SulphuricLakeFeature.java index ef6adec3..07d49e00 100644 --- a/src/main/java/ru/betterend/world/features/terrain/SulphuricLakeFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/SulphuricLakeFeature.java @@ -18,7 +18,7 @@ import ru.bclib.api.TagAPI; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.BlockProperties; +import ru.betterend.blocks.EndBlockProperties; import ru.betterend.blocks.SulphurCrystalBlock; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; @@ -173,7 +173,7 @@ public class SulphuricLakeFeature extends DefaultFeature { private void placeBrimstone(WorldGenLevel world, BlockPos pos, Random random) { BlockState state = getBrimstone(world, pos); BlocksHelper.setWithoutUpdate(world, pos, state); - if (state.getValue(BlockProperties.ACTIVE)) { + if (state.getValue(EndBlockProperties.ACTIVE)) { makeShards(world, pos, random); } } @@ -181,7 +181,7 @@ public class SulphuricLakeFeature extends DefaultFeature { private BlockState getBrimstone(WorldGenLevel world, BlockPos pos) { for (Direction dir : BlocksHelper.DIRECTIONS) { if (world.getBlockState(pos.relative(dir)).is(Blocks.WATER)) { - return EndBlocks.BRIMSTONE.defaultBlockState().setValue(BlockProperties.ACTIVE, true); + return EndBlocks.BRIMSTONE.defaultBlockState().setValue(EndBlockProperties.ACTIVE, true); } } return EndBlocks.BRIMSTONE.defaultBlockState(); diff --git a/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java b/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java index 9e239ecb..580733b4 100644 --- a/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java @@ -1,11 +1,6 @@ package ru.betterend.world.features.trees; -import java.util.List; -import java.util.Random; -import java.util.function.Function; - import com.mojang.math.Vector3f; - import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -18,15 +13,19 @@ import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BaseAttachedBlock; import ru.bclib.sdf.PosInfo; import ru.bclib.sdf.SDF; import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.util.SplineHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.basis.AttachedBlock; import ru.betterend.registry.EndBlocks; +import java.util.List; +import java.util.Random; +import java.util.function.Function; + public class GiganticAmaranitaFeature extends DefaultFeature { private static final Function REPLACE; private static final Function IGNORE; @@ -48,9 +47,7 @@ public class GiganticAmaranitaFeature extends DefaultFeature { BlocksHelper.setWithoutUpdate(world, pos, AIR); float radius = size * 0.17F;// MHelper.randRange(0.8F, 1.2F, random); - SDF function = SplineHelper.buildSDF(spline, radius, 0.2F, (bpos) -> { - return EndBlocks.AMARANITA_STEM.defaultBlockState(); - }); + SDF function = SplineHelper.buildSDF(spline, radius, 0.2F, (bpos) -> EndBlocks.AMARANITA_STEM.defaultBlockState()); Vector3f capPos = spline.get(spline.size() - 1); makeHead(world, pos.offset(capPos.x() + 0.5F, capPos.y() + 1.5F, capPos.z() + 0.5F), Mth.floor(size / 1.6F)); @@ -99,7 +96,7 @@ public class GiganticAmaranitaFeature extends DefaultFeature { mut.move(Direction.DOWN); if (world.getBlockState(mut).getMaterial().isReplaceable()) { BlocksHelper.setWithoutUpdate(world, mut, EndBlocks.AMARANITA_FUR.defaultBlockState() - .setValue(AttachedBlock.FACING, Direction.DOWN)); + .setValue(BaseAttachedBlock.FACING, Direction.DOWN)); } } } @@ -164,13 +161,13 @@ public class GiganticAmaranitaFeature extends DefaultFeature { Direction dir = Direction.fromAxisAndDirection(axis, distance < 0 ? AxisDirection.NEGATIVE : AxisDirection.POSITIVE); BlocksHelper.setWithoutUpdate(world, offseted, EndBlocks.AMARANITA_FUR - .defaultBlockState().setValue(AttachedBlock.FACING, dir)); + .defaultBlockState().setValue(BaseAttachedBlock.FACING, dir)); } mut.move(Direction.DOWN); } if (world.getBlockState(mut).getMaterial().isReplaceable()) { BlocksHelper.setWithoutUpdate(world, mut, EndBlocks.AMARANITA_FUR.defaultBlockState() - .setValue(AttachedBlock.FACING, Direction.DOWN)); + .setValue(BaseAttachedBlock.FACING, Direction.DOWN)); } } } @@ -278,13 +275,13 @@ public class GiganticAmaranitaFeature extends DefaultFeature { Direction dir = Direction.fromAxisAndDirection(axis, distance < 0 ? AxisDirection.NEGATIVE : AxisDirection.POSITIVE); BlocksHelper.setWithoutUpdate(world, offseted, EndBlocks.AMARANITA_FUR - .defaultBlockState().setValue(AttachedBlock.FACING, dir)); + .defaultBlockState().setValue(BaseAttachedBlock.FACING, dir)); } mut.move(Direction.DOWN); } if (world.getBlockState(mut).getMaterial().isReplaceable()) { BlocksHelper.setWithoutUpdate(world, mut, EndBlocks.AMARANITA_FUR.defaultBlockState() - .setValue(AttachedBlock.FACING, Direction.DOWN)); + .setValue(BaseAttachedBlock.FACING, Direction.DOWN)); } } } @@ -335,9 +332,7 @@ public class GiganticAmaranitaFeature extends DefaultFeature { return state.getMaterial().isReplaceable(); }; - IGNORE = (state) -> { - return EndBlocks.DRAGON_TREE.isTreeLog(state); - }; + IGNORE = EndBlocks.DRAGON_TREE::isTreeLog; POST = (info) -> { if (!info.getStateUp().is(EndBlocks.AMARANITA_STEM) || !info.getStateDown().is(EndBlocks.AMARANITA_STEM)) { diff --git a/src/main/java/ru/betterend/world/features/trees/LucerniaFeature.java b/src/main/java/ru/betterend/world/features/trees/LucerniaFeature.java index 1afc6d13..b8a8ffc6 100644 --- a/src/main/java/ru/betterend/world/features/trees/LucerniaFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/LucerniaFeature.java @@ -17,6 +17,8 @@ import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFScale; @@ -28,8 +30,6 @@ import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.util.SplineHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; import ru.betterend.blocks.basis.FurBlock; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; @@ -77,12 +77,10 @@ public class LucerniaFeature extends DefaultFeature { sub = new SDFTranslate().setTranslate(0, -radius * 5, 0).setSource(sub); sphere = new SDFSubtraction().setSourceA(sphere).setSourceB(sub); sphere = new SDFScale3D().setScale(1, 0.75F, 1).setSource(sphere); - sphere = new SDFDisplacement().setFunction((vec) -> { - return (float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 2F; - }).setSource(sphere); - sphere = new SDFDisplacement().setFunction((vec) -> { - return MHelper.randRange(-1.5F, 1.5F, random); - }).setSource(sphere); + sphere = new SDFDisplacement().setFunction((vec) -> + (float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 2F).setSource(sphere); + sphere = new SDFDisplacement().setFunction((vec) -> + MHelper.randRange(-1.5F, 1.5F, random)).setSource(sphere); MutableBlockPos mut = new MutableBlockPos(); for (Direction d1 : BlocksHelper.HORIZONTAL) { @@ -204,9 +202,7 @@ public class LucerniaFeature extends DefaultFeature { return state.getMaterial().isReplaceable(); }; - IGNORE = (state) -> { - return EndBlocks.LUCERNIA.isTreeLog(state); - }; + IGNORE = EndBlocks.LUCERNIA::isTreeLog; SPLINE = Lists.newArrayList(new Vector3f(0.00F, 0.00F, 0.00F), new Vector3f(0.10F, 0.35F, 0.00F), new Vector3f(0.20F, 0.50F, 0.00F), new Vector3f(0.30F, 0.55F, 0.00F), new Vector3f(0.42F, 0.70F, 0.00F), diff --git a/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java b/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java index eedced96..7f9c7ecb 100644 --- a/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/TenaneaFeature.java @@ -17,6 +17,8 @@ import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.material.Material; import ru.bclib.api.TagAPI; +import ru.bclib.blocks.BlockProperties; +import ru.bclib.blocks.BlockProperties.TripleShape; import ru.bclib.sdf.SDF; import ru.bclib.sdf.operator.SDFDisplacement; import ru.bclib.sdf.operator.SDFScale; @@ -28,8 +30,6 @@ import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; import ru.bclib.util.SplineHelper; import ru.bclib.world.features.DefaultFeature; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; import ru.betterend.blocks.basis.FurBlock; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBlocks; @@ -73,12 +73,10 @@ public class TenaneaFeature extends DefaultFeature { sub = new SDFTranslate().setTranslate(0, -radius * 5, 0).setSource(sub); sphere = new SDFSubtraction().setSourceA(sphere).setSourceB(sub); sphere = new SDFScale3D().setScale(1, 0.75F, 1).setSource(sphere); - sphere = new SDFDisplacement().setFunction((vec) -> { - return (float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 2F; - }).setSource(sphere); - sphere = new SDFDisplacement().setFunction((vec) -> { - return MHelper.randRange(-1.5F, 1.5F, random); - }).setSource(sphere); + sphere = new SDFDisplacement().setFunction((vec) -> + (float) noise.eval(vec.x() * 0.2, vec.y() * 0.2, vec.z() * 0.2) * 2F).setSource(sphere); + sphere = new SDFDisplacement().setFunction((vec) -> + MHelper.randRange(-1.5F, 1.5F, random)).setSource(sphere); MutableBlockPos mut = new MutableBlockPos(); for (Direction d1 : BlocksHelper.HORIZONTAL) { @@ -185,9 +183,7 @@ public class TenaneaFeature extends DefaultFeature { return state.getMaterial().isReplaceable(); }; - IGNORE = (state) -> { - return EndBlocks.TENANEA.isTreeLog(state); - }; + IGNORE = EndBlocks.TENANEA::isTreeLog; SPLINE = Lists.newArrayList(new Vector3f(0.00F, 0.00F, 0.00F), new Vector3f(0.10F, 0.35F, 0.00F), new Vector3f(0.20F, 0.50F, 0.00F), new Vector3f(0.30F, 0.55F, 0.00F), new Vector3f(0.42F, 0.70F, 0.00F), diff --git a/src/main/resources/betterend.mixins.common.json b/src/main/resources/betterend.mixins.common.json index a5527273..a644fe91 100644 --- a/src/main/resources/betterend.mixins.common.json +++ b/src/main/resources/betterend.mixins.common.json @@ -26,7 +26,6 @@ "ServerPlayerMixin", "SpikeFeatureMixin", "ServerLevelMixin", - "AnvilBlockMixin", "PlayerListMixin", "AnvilMenuMixin", "EnderManMixin", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index ad8086dc..c3e52e8c 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -46,7 +46,7 @@ "fabricloader": ">=0.11.0", "fabric": ">=0.32.0", "minecraft": ">=1.16.4", - "bclib": ">=0.1.26" + "bclib": ">=0.1.28" }, "suggests": { "byg": ">=1.1.3",