From ff4ef86c6d41b69dba0b6301e9922d0e89ba8ba0 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Mon, 7 Jun 2021 12:14:18 +0300 Subject: [PATCH] EndBlocks.getModBlocks returns blocks instead of items; Pedestals unique BlockEntity check; --- .../ru/betterend/blocks/EternalPedestal.java | 8 ++++ .../ru/betterend/blocks/InfusionPedestal.java | 9 ++++- .../betterend/blocks/basis/PedestalBlock.java | 18 +++++++-- .../ru/betterend/client/BetterEndClient.java | 16 +++----- .../betterend/integration/rei/REIPlugin.java | 13 +++---- .../betterend/registry/EndBlockEntities.java | 15 +------- .../java/ru/betterend/registry/EndBlocks.java | 37 +++++-------------- .../java/ru/betterend/registry/EndItems.java | 1 + .../java/ru/betterend/registry/EndTags.java | 12 +++--- 9 files changed, 58 insertions(+), 71 deletions(-) diff --git a/src/main/java/ru/betterend/blocks/EternalPedestal.java b/src/main/java/ru/betterend/blocks/EternalPedestal.java index 8d057510..4261bd22 100644 --- a/src/main/java/ru/betterend/blocks/EternalPedestal.java +++ b/src/main/java/ru/betterend/blocks/EternalPedestal.java @@ -28,6 +28,7 @@ import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndPortals; import ru.betterend.rituals.EternalRitual; +@SuppressWarnings("deprecation") public class EternalPedestal extends PedestalBlock { public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVE; @@ -74,6 +75,7 @@ public class EternalPedestal extends PedestalBlock { } @Override + @Deprecated public BlockState updateShape(BlockState state, Direction direction, BlockState newState, LevelAccessor world, BlockPos pos, BlockPos posFrom) { BlockState updated = super.updateShape(state, direction, newState, world, pos, posFrom); if (!updated.is(this)) return updated; @@ -84,6 +86,7 @@ public class EternalPedestal extends PedestalBlock { } @Override + @Deprecated public float getDestroyProgress(BlockState state, Player player, BlockGetter world, BlockPos pos) { return 0.0F; } @@ -127,4 +130,9 @@ public class EternalPedestal extends PedestalBlock { public BlockEntity newBlockEntity(BlockGetter world) { return new EternalPedestalEntity(); } + + @Override + public boolean hasUniqueEntity() { + return true; + } } diff --git a/src/main/java/ru/betterend/blocks/InfusionPedestal.java b/src/main/java/ru/betterend/blocks/InfusionPedestal.java index 2cfd9506..7036b7d8 100644 --- a/src/main/java/ru/betterend/blocks/InfusionPedestal.java +++ b/src/main/java/ru/betterend/blocks/InfusionPedestal.java @@ -14,6 +14,7 @@ import ru.betterend.blocks.basis.PedestalBlock; import ru.betterend.blocks.entities.InfusionPedestalEntity; import ru.betterend.rituals.InfusionRitual; +@SuppressWarnings("deprecation") public class InfusionPedestal extends PedestalBlock { private static final VoxelShape SHAPE_DEFAULT; private static final VoxelShape SHAPE_PEDESTAL_TOP; @@ -42,8 +43,14 @@ public class InfusionPedestal extends PedestalBlock { public BlockEntity newBlockEntity(BlockGetter world) { return new InfusionPedestalEntity(); } - + @Override + public boolean hasUniqueEntity() { + return true; + } + + @Override + @Deprecated public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { if (state.is(this)) { switch(state.getValue(STATE)) { diff --git a/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java b/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java index 74118517..33336b13 100644 --- a/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/PedestalBlock.java @@ -49,6 +49,7 @@ import ru.betterend.client.models.Patterns; import ru.betterend.registry.EndBlocks; import ru.betterend.rituals.InfusionRitual; +@SuppressWarnings("deprecation") public class PedestalBlock extends BlockBaseNotFull implements EntityBlock { public final static EnumProperty STATE = BlockProperties.PEDESTAL_STATE; public static final BooleanProperty HAS_ITEM = BlockProperties.HAS_ITEM; @@ -65,8 +66,8 @@ public class PedestalBlock extends BlockBaseNotFull implements EntityBlock { * * Register new Pedestal block with Better End mod id. * - * @param name - * @param source + * @param name pedestal name + * @param source source block * @return new Pedestal block with Better End id. */ public static Block registerPedestal(String name, Block source) { @@ -77,8 +78,8 @@ public class PedestalBlock extends BlockBaseNotFull implements EntityBlock { * * Register new Pedestal block with specified mod id. * - * @param id - * @param source + * @param id pedestal id + * @param source source block * @return new Pedestal block with specified id. */ public static Block registerPedestal(ResourceLocation id, Block source) { @@ -102,6 +103,7 @@ public class PedestalBlock extends BlockBaseNotFull implements EntityBlock { } @Override + @Deprecated public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { if (world.isClientSide || !state.is(this)) return InteractionResult.CONSUME; if (!isPlaceable(state)) { @@ -166,6 +168,7 @@ public class PedestalBlock extends BlockBaseNotFull implements EntityBlock { } @Override + @Deprecated public BlockState updateShape(BlockState state, Direction direction, BlockState newState, LevelAccessor world, BlockPos pos, BlockPos posFrom) { BlockState updated = getUpdatedState(state, direction, newState, world, pos, posFrom); if (!updated.is(this)) return updated; @@ -291,6 +294,7 @@ public class PedestalBlock extends BlockBaseNotFull implements EntityBlock { } @Override + @Deprecated public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { if (state.is(this)) { switch(state.getValue(STATE)) { @@ -326,13 +330,19 @@ public class PedestalBlock extends BlockBaseNotFull implements EntityBlock { public BlockEntity newBlockEntity(BlockGetter world) { return new PedestalBlockEntity(); } + + public boolean hasUniqueEntity() { + return false; + } @Override + @Deprecated public boolean hasAnalogOutputSignal(BlockState state) { return state.getBlock() instanceof PedestalBlock; } @Override + @Deprecated public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) { return state.getValue(HAS_ITEM) ? 15 : 0; } diff --git a/src/main/java/ru/betterend/client/BetterEndClient.java b/src/main/java/ru/betterend/client/BetterEndClient.java index 2263e153..a7c5265e 100644 --- a/src/main/java/ru/betterend/client/BetterEndClient.java +++ b/src/main/java/ru/betterend/client/BetterEndClient.java @@ -1,7 +1,5 @@ package ru.betterend.client; -import java.util.List; - import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.minecraft.ChatFormatting; @@ -10,13 +8,11 @@ import net.minecraft.core.Registry; import net.minecraft.network.chat.Style; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; import ru.bclib.blocks.BaseChestBlock; import ru.bclib.blocks.BaseSignBlock; import ru.bclib.client.render.BaseChestBlockEntityRenderer; import ru.bclib.client.render.BaseSignBlockEntityRenderer; -import ru.bclib.registry.BaseRegistry; import ru.bclib.util.TranslationHelper; import ru.betterend.BetterEnd; import ru.betterend.client.render.ERenderLayer; @@ -26,6 +22,8 @@ import ru.betterend.interfaces.MultiModelItem; import ru.betterend.item.CrystaliteArmor; import ru.betterend.registry.*; +import java.util.List; + public class BetterEndClient implements ClientModInitializer { @Override public void onInitializeClient() { @@ -75,10 +73,8 @@ public class BetterEndClient implements ClientModInitializer { } private static void registerRenderers() { - List modBlocks = EndBlocks.getModBlocks(); - modBlocks.stream().filter(item -> item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof BaseChestBlock) - .map(item -> ((BlockItem) item).getBlock()).forEach(BaseChestBlockEntityRenderer::registerRenderLayer); - modBlocks.stream().filter(item -> item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof BaseSignBlock) - .map(item -> ((BlockItem) item).getBlock()).forEach(BaseSignBlockEntityRenderer::registerRenderLayer); + List modBlocks = EndBlocks.getModBlocks(); + modBlocks.stream().filter(BaseChestBlock.class::isInstance).forEach(BaseChestBlockEntityRenderer::registerRenderLayer); + modBlocks.stream().filter(BaseSignBlock.class::isInstance).forEach(BaseSignBlockEntityRenderer::registerRenderLayer); } } diff --git a/src/main/java/ru/betterend/integration/rei/REIPlugin.java b/src/main/java/ru/betterend/integration/rei/REIPlugin.java index 0ff965f0..64857888 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; @@ -13,7 +9,6 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.impl.content.registry.FuelRegistryImpl; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.crafting.BlastingRecipe; import net.minecraft.world.level.block.Blocks; import ru.betterend.BetterEnd; @@ -23,7 +18,9 @@ import ru.betterend.recipe.builders.AlloyingRecipe; import ru.betterend.recipe.builders.AnvilRecipe; import ru.betterend.recipe.builders.InfusionRecipe; import ru.betterend.registry.EndBlocks; -import ru.betterend.registry.EndItems; + +import java.util.List; +import java.util.stream.Collectors; @Environment(EnvType.CLIENT) public class REIPlugin implements REIPluginV0 { @@ -81,11 +78,11 @@ public class REIPlugin implements REIPluginV0 { static { List anvils = Lists.newArrayList(EntryStack.ofItems(EndBlocks.getModBlocks().stream() - .filter(item -> ((BlockItem) item).getBlock() instanceof EndAnvilBlock).collect(Collectors.toList()))); + .filter(EndAnvilBlock.class::isInstance).collect(Collectors.toList()))); anvils.add(0, EntryStack.create(Blocks.ANVIL)); ANVILS = anvils.toArray(new EntryStack[0]); FURNACES = Lists.newArrayList(EntryStack.ofItems(EndBlocks.getModBlocks().stream() - .filter(item -> ((BlockItem) item).getBlock() instanceof EndFurnaceBlock).collect(Collectors.toList()))) + .filter(EndFurnaceBlock.class::isInstance).collect(Collectors.toList()))) .toArray(new EntryStack[0]); } } diff --git a/src/main/java/ru/betterend/registry/EndBlockEntities.java b/src/main/java/ru/betterend/registry/EndBlockEntities.java index 1c0a01ff..c6154f31 100644 --- a/src/main/java/ru/betterend/registry/EndBlockEntities.java +++ b/src/main/java/ru/betterend/registry/EndBlockEntities.java @@ -1,21 +1,13 @@ package ru.betterend.registry; import net.minecraft.core.Registry; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; -import ru.bclib.registry.BaseRegistry; import ru.betterend.BetterEnd; import ru.betterend.blocks.EndStoneSmelter; -import ru.betterend.blocks.EternalPedestal; -import ru.betterend.blocks.InfusionPedestal; import ru.betterend.blocks.basis.PedestalBlock; -import ru.betterend.blocks.entities.BlockEntityHydrothermalVent; -import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; -import ru.betterend.blocks.entities.EternalPedestalEntity; -import ru.betterend.blocks.entities.InfusionPedestalEntity; -import ru.betterend.blocks.entities.PedestalBlockEntity; +import ru.betterend.blocks.entities.*; public class EndBlockEntities { public final static BlockEntityType END_STONE_SMELTER = registerBlockEntity(EndStoneSmelter.ID, @@ -37,10 +29,7 @@ public class EndBlockEntities { static Block[] getPedestals() { return EndBlocks.getModBlocks().stream() - .filter(item -> item instanceof BlockItem) - .map(item -> ((BlockItem) item).getBlock()) - .filter(block -> block instanceof PedestalBlock && - !(block instanceof EternalPedestal || block instanceof InfusionPedestal)) + .filter(block -> block instanceof PedestalBlock && !((PedestalBlock) block).hasUniqueEntity()) .toArray(Block[]::new); } } diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 9ee9a68e..a1b10ec6 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -1,14 +1,13 @@ package ru.betterend.registry; -import net.minecraft.world.item.Item; -import org.jetbrains.annotations.NotNull; - import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.BlockItem; 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 org.jetbrains.annotations.NotNull; import ru.bclib.blocks.BaseBarrelBlock; import ru.bclib.blocks.BaseChestBlock; import ru.bclib.blocks.BaseFurnaceBlock; @@ -17,36 +16,17 @@ 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 // public static final Block ENDSTONE_DUST = registerBlock("endstone_dust", new EndstoneDustBlock()); @@ -332,8 +312,9 @@ public class EndBlocks extends BlocksRegistry { super(creativeTab); } - public static List getModBlocks() { - return getModBlocks(BetterEnd.MOD_ID); + public static List getModBlocks() { + return getModBlocks(BetterEnd.MOD_ID).stream().filter(BlockItem.class::isInstance) + .map(item -> ((BlockItem) item).getBlock()).collect(Collectors.toList()); } public static Block registerBlock(ResourceLocation id, Block block) { diff --git a/src/main/java/ru/betterend/registry/EndItems.java b/src/main/java/ru/betterend/registry/EndItems.java index 17518da7..2653e85d 100644 --- a/src/main/java/ru/betterend/registry/EndItems.java +++ b/src/main/java/ru/betterend/registry/EndItems.java @@ -41,6 +41,7 @@ import ru.betterend.tab.CreativeTabs; import java.util.List; +@SuppressWarnings("unused") public class EndItems extends ItemsRegistry { // Materials // public final static Item ENDER_DUST = registerEndItem("ender_dust"); diff --git a/src/main/java/ru/betterend/registry/EndTags.java b/src/main/java/ru/betterend/registry/EndTags.java index 55ce100b..79404778 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; @@ -16,7 +12,6 @@ import net.minecraft.tags.Tag; import net.minecraft.tags.Tag.Named; import net.minecraft.tags.TagCollection; import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biome.BiomeCategory; @@ -34,6 +29,10 @@ 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: // https://fabricmc.net/wiki/tutorial:tags @@ -82,8 +81,7 @@ public class EndTags { TagAPI.addEndGround(EndBlocks.ENDSTONE_DUST); TagAPI.addEndGround(EndBlocks.AMBER_ORE); - EndBlocks.getModBlocks().forEach(blockItem -> { - Block block = ((BlockItem) blockItem).getBlock(); + EndBlocks.getModBlocks().forEach(block -> { if (block instanceof EndTerrainBlock) { TagAPI.addEndGround(block); TagHelper.addTag(BlockTags.NYLIUM, block);