EndBlocks.getModBlocks returns blocks instead of items;

Pedestals unique BlockEntity check;
This commit is contained in:
Aleksey 2021-06-07 12:14:18 +03:00
parent 5cf843bde7
commit ff4ef86c6d
9 changed files with 58 additions and 71 deletions

View file

@ -28,6 +28,7 @@ import ru.betterend.registry.EndBlocks;
import ru.betterend.registry.EndPortals; import ru.betterend.registry.EndPortals;
import ru.betterend.rituals.EternalRitual; import ru.betterend.rituals.EternalRitual;
@SuppressWarnings("deprecation")
public class EternalPedestal extends PedestalBlock { public class EternalPedestal extends PedestalBlock {
public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVE; public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVE;
@ -74,6 +75,7 @@ public class EternalPedestal extends PedestalBlock {
} }
@Override @Override
@Deprecated
public BlockState updateShape(BlockState state, Direction direction, BlockState newState, LevelAccessor world, BlockPos pos, BlockPos posFrom) { 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); BlockState updated = super.updateShape(state, direction, newState, world, pos, posFrom);
if (!updated.is(this)) return updated; if (!updated.is(this)) return updated;
@ -84,6 +86,7 @@ public class EternalPedestal extends PedestalBlock {
} }
@Override @Override
@Deprecated
public float getDestroyProgress(BlockState state, Player player, BlockGetter world, BlockPos pos) { public float getDestroyProgress(BlockState state, Player player, BlockGetter world, BlockPos pos) {
return 0.0F; return 0.0F;
} }
@ -127,4 +130,9 @@ public class EternalPedestal extends PedestalBlock {
public BlockEntity newBlockEntity(BlockGetter world) { public BlockEntity newBlockEntity(BlockGetter world) {
return new EternalPedestalEntity(); return new EternalPedestalEntity();
} }
@Override
public boolean hasUniqueEntity() {
return true;
}
} }

View file

@ -14,6 +14,7 @@ import ru.betterend.blocks.basis.PedestalBlock;
import ru.betterend.blocks.entities.InfusionPedestalEntity; import ru.betterend.blocks.entities.InfusionPedestalEntity;
import ru.betterend.rituals.InfusionRitual; import ru.betterend.rituals.InfusionRitual;
@SuppressWarnings("deprecation")
public class InfusionPedestal extends PedestalBlock { public class InfusionPedestal extends PedestalBlock {
private static final VoxelShape SHAPE_DEFAULT; private static final VoxelShape SHAPE_DEFAULT;
private static final VoxelShape SHAPE_PEDESTAL_TOP; private static final VoxelShape SHAPE_PEDESTAL_TOP;
@ -42,8 +43,14 @@ public class InfusionPedestal extends PedestalBlock {
public BlockEntity newBlockEntity(BlockGetter world) { public BlockEntity newBlockEntity(BlockGetter world) {
return new InfusionPedestalEntity(); return new InfusionPedestalEntity();
} }
@Override @Override
public boolean hasUniqueEntity() {
return true;
}
@Override
@Deprecated
public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
if (state.is(this)) { if (state.is(this)) {
switch(state.getValue(STATE)) { switch(state.getValue(STATE)) {

View file

@ -49,6 +49,7 @@ import ru.betterend.client.models.Patterns;
import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndBlocks;
import ru.betterend.rituals.InfusionRitual; import ru.betterend.rituals.InfusionRitual;
@SuppressWarnings("deprecation")
public class PedestalBlock extends BlockBaseNotFull implements EntityBlock { public class PedestalBlock extends BlockBaseNotFull implements EntityBlock {
public final static EnumProperty<PedestalState> STATE = BlockProperties.PEDESTAL_STATE; public final static EnumProperty<PedestalState> STATE = BlockProperties.PEDESTAL_STATE;
public static final BooleanProperty HAS_ITEM = BlockProperties.HAS_ITEM; 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. * Register new Pedestal block with Better End mod id.
* *
* @param name * @param name pedestal name
* @param source * @param source source block
* @return new Pedestal block with Better End id. * @return new Pedestal block with Better End id.
*/ */
public static Block registerPedestal(String name, Block source) { 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. * Register new Pedestal block with specified mod id.
* *
* @param id * @param id pedestal id
* @param source * @param source source block
* @return new Pedestal block with specified id. * @return new Pedestal block with specified id.
*/ */
public static Block registerPedestal(ResourceLocation id, Block source) { public static Block registerPedestal(ResourceLocation id, Block source) {
@ -102,6 +103,7 @@ public class PedestalBlock extends BlockBaseNotFull implements EntityBlock {
} }
@Override @Override
@Deprecated
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { 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 (world.isClientSide || !state.is(this)) return InteractionResult.CONSUME;
if (!isPlaceable(state)) { if (!isPlaceable(state)) {
@ -166,6 +168,7 @@ public class PedestalBlock extends BlockBaseNotFull implements EntityBlock {
} }
@Override @Override
@Deprecated
public BlockState updateShape(BlockState state, Direction direction, BlockState newState, LevelAccessor world, BlockPos pos, BlockPos posFrom) { public BlockState updateShape(BlockState state, Direction direction, BlockState newState, LevelAccessor world, BlockPos pos, BlockPos posFrom) {
BlockState updated = getUpdatedState(state, direction, newState, world, pos, posFrom); BlockState updated = getUpdatedState(state, direction, newState, world, pos, posFrom);
if (!updated.is(this)) return updated; if (!updated.is(this)) return updated;
@ -291,6 +294,7 @@ public class PedestalBlock extends BlockBaseNotFull implements EntityBlock {
} }
@Override @Override
@Deprecated
public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
if (state.is(this)) { if (state.is(this)) {
switch(state.getValue(STATE)) { switch(state.getValue(STATE)) {
@ -326,13 +330,19 @@ public class PedestalBlock extends BlockBaseNotFull implements EntityBlock {
public BlockEntity newBlockEntity(BlockGetter world) { public BlockEntity newBlockEntity(BlockGetter world) {
return new PedestalBlockEntity(); return new PedestalBlockEntity();
} }
public boolean hasUniqueEntity() {
return false;
}
@Override @Override
@Deprecated
public boolean hasAnalogOutputSignal(BlockState state) { public boolean hasAnalogOutputSignal(BlockState state) {
return state.getBlock() instanceof PedestalBlock; return state.getBlock() instanceof PedestalBlock;
} }
@Override @Override
@Deprecated
public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) { public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) {
return state.getValue(HAS_ITEM) ? 15 : 0; return state.getValue(HAS_ITEM) ? 15 : 0;
} }

View file

@ -1,7 +1,5 @@
package ru.betterend.client; package ru.betterend.client;
import java.util.List;
import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
@ -10,13 +8,11 @@ import net.minecraft.core.Registry;
import net.minecraft.network.chat.Style; import net.minecraft.network.chat.Style;
import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block;
import net.minecraft.world.item.Item;
import ru.bclib.blocks.BaseChestBlock; import ru.bclib.blocks.BaseChestBlock;
import ru.bclib.blocks.BaseSignBlock; import ru.bclib.blocks.BaseSignBlock;
import ru.bclib.client.render.BaseChestBlockEntityRenderer; import ru.bclib.client.render.BaseChestBlockEntityRenderer;
import ru.bclib.client.render.BaseSignBlockEntityRenderer; import ru.bclib.client.render.BaseSignBlockEntityRenderer;
import ru.bclib.registry.BaseRegistry;
import ru.bclib.util.TranslationHelper; import ru.bclib.util.TranslationHelper;
import ru.betterend.BetterEnd; import ru.betterend.BetterEnd;
import ru.betterend.client.render.ERenderLayer; import ru.betterend.client.render.ERenderLayer;
@ -26,6 +22,8 @@ import ru.betterend.interfaces.MultiModelItem;
import ru.betterend.item.CrystaliteArmor; import ru.betterend.item.CrystaliteArmor;
import ru.betterend.registry.*; import ru.betterend.registry.*;
import java.util.List;
public class BetterEndClient implements ClientModInitializer { public class BetterEndClient implements ClientModInitializer {
@Override @Override
public void onInitializeClient() { public void onInitializeClient() {
@ -75,10 +73,8 @@ public class BetterEndClient implements ClientModInitializer {
} }
private static void registerRenderers() { private static void registerRenderers() {
List<Item> modBlocks = EndBlocks.getModBlocks(); List<Block> modBlocks = EndBlocks.getModBlocks();
modBlocks.stream().filter(item -> item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof BaseChestBlock) modBlocks.stream().filter(BaseChestBlock.class::isInstance).forEach(BaseChestBlockEntityRenderer::registerRenderLayer);
.map(item -> ((BlockItem) item).getBlock()).forEach(BaseChestBlockEntityRenderer::registerRenderLayer); modBlocks.stream().filter(BaseSignBlock.class::isInstance).forEach(BaseSignBlockEntityRenderer::registerRenderLayer);
modBlocks.stream().filter(item -> item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof BaseSignBlock)
.map(item -> ((BlockItem) item).getBlock()).forEach(BaseSignBlockEntityRenderer::registerRenderLayer);
} }
} }

View file

@ -1,10 +1,6 @@
package ru.betterend.integration.rei; package ru.betterend.integration.rei;
import java.util.List;
import java.util.stream.Collectors;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import me.shedaniel.rei.api.EntryStack; import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.RecipeHelper; import me.shedaniel.rei.api.RecipeHelper;
import me.shedaniel.rei.api.plugins.REIPluginV0; import me.shedaniel.rei.api.plugins.REIPluginV0;
@ -13,7 +9,6 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import net.fabricmc.fabric.impl.content.registry.FuelRegistryImpl; import net.fabricmc.fabric.impl.content.registry.FuelRegistryImpl;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.crafting.BlastingRecipe; import net.minecraft.world.item.crafting.BlastingRecipe;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import ru.betterend.BetterEnd; 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.AnvilRecipe;
import ru.betterend.recipe.builders.InfusionRecipe; import ru.betterend.recipe.builders.InfusionRecipe;
import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndBlocks;
import ru.betterend.registry.EndItems;
import java.util.List;
import java.util.stream.Collectors;
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public class REIPlugin implements REIPluginV0 { public class REIPlugin implements REIPluginV0 {
@ -81,11 +78,11 @@ public class REIPlugin implements REIPluginV0 {
static { static {
List<EntryStack> anvils = Lists.newArrayList(EntryStack.ofItems(EndBlocks.getModBlocks().stream() List<EntryStack> 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.add(0, EntryStack.create(Blocks.ANVIL));
ANVILS = anvils.toArray(new EntryStack[0]); ANVILS = anvils.toArray(new EntryStack[0]);
FURNACES = Lists.newArrayList(EntryStack.ofItems(EndBlocks.getModBlocks().stream() 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]); .toArray(new EntryStack[0]);
} }
} }

View file

@ -1,21 +1,13 @@
package ru.betterend.registry; package ru.betterend.registry;
import net.minecraft.core.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.Block;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import ru.bclib.registry.BaseRegistry;
import ru.betterend.BetterEnd; import ru.betterend.BetterEnd;
import ru.betterend.blocks.EndStoneSmelter; 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.basis.PedestalBlock;
import ru.betterend.blocks.entities.BlockEntityHydrothermalVent; import ru.betterend.blocks.entities.*;
import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity;
import ru.betterend.blocks.entities.EternalPedestalEntity;
import ru.betterend.blocks.entities.InfusionPedestalEntity;
import ru.betterend.blocks.entities.PedestalBlockEntity;
public class EndBlockEntities { public class EndBlockEntities {
public final static BlockEntityType<EndStoneSmelterBlockEntity> END_STONE_SMELTER = registerBlockEntity(EndStoneSmelter.ID, public final static BlockEntityType<EndStoneSmelterBlockEntity> END_STONE_SMELTER = registerBlockEntity(EndStoneSmelter.ID,
@ -37,10 +29,7 @@ public class EndBlockEntities {
static Block[] getPedestals() { static Block[] getPedestals() {
return EndBlocks.getModBlocks().stream() return EndBlocks.getModBlocks().stream()
.filter(item -> item instanceof BlockItem) .filter(block -> block instanceof PedestalBlock && !((PedestalBlock) block).hasUniqueEntity())
.map(item -> ((BlockItem) item).getBlock())
.filter(block -> block instanceof PedestalBlock &&
!(block instanceof EternalPedestal || block instanceof InfusionPedestal))
.toArray(Block[]::new); .toArray(Block[]::new);
} }
} }

View file

@ -1,14 +1,13 @@
package ru.betterend.registry; 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.fabricmc.fabric.api.item.v1.FabricItemSettings;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.material.MaterialColor;
import org.jetbrains.annotations.NotNull;
import ru.bclib.blocks.BaseBarrelBlock; import ru.bclib.blocks.BaseBarrelBlock;
import ru.bclib.blocks.BaseChestBlock; import ru.bclib.blocks.BaseChestBlock;
import ru.bclib.blocks.BaseFurnaceBlock; import ru.bclib.blocks.BaseFurnaceBlock;
@ -17,36 +16,17 @@ import ru.bclib.registry.BaseBlockEntities;
import ru.bclib.registry.BlocksRegistry; import ru.bclib.registry.BlocksRegistry;
import ru.betterend.BetterEnd; import ru.betterend.BetterEnd;
import ru.betterend.blocks.*; import ru.betterend.blocks.*;
import ru.betterend.blocks.basis.EndCropBlock; import ru.betterend.blocks.basis.*;
import ru.betterend.blocks.basis.EndFurnaceBlock; import ru.betterend.blocks.complex.*;
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.config.Configs; import ru.betterend.config.Configs;
import ru.betterend.item.material.EndArmorMaterial; import ru.betterend.item.material.EndArmorMaterial;
import ru.betterend.item.material.EndToolMaterial; import ru.betterend.item.material.EndToolMaterial;
import ru.betterend.tab.CreativeTabs; import ru.betterend.tab.CreativeTabs;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@SuppressWarnings("unused")
public class EndBlocks extends BlocksRegistry { public class EndBlocks extends BlocksRegistry {
// Terrain // // Terrain //
public static final Block ENDSTONE_DUST = registerBlock("endstone_dust", new EndstoneDustBlock()); public static final Block ENDSTONE_DUST = registerBlock("endstone_dust", new EndstoneDustBlock());
@ -332,8 +312,9 @@ public class EndBlocks extends BlocksRegistry {
super(creativeTab); super(creativeTab);
} }
public static List<Item> getModBlocks() { public static List<Block> getModBlocks() {
return getModBlocks(BetterEnd.MOD_ID); 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) { public static Block registerBlock(ResourceLocation id, Block block) {

View file

@ -41,6 +41,7 @@ import ru.betterend.tab.CreativeTabs;
import java.util.List; import java.util.List;
@SuppressWarnings("unused")
public class EndItems extends ItemsRegistry { public class EndItems extends ItemsRegistry {
// Materials // // Materials //
public final static Item ENDER_DUST = registerEndItem("ender_dust"); public final static Item ENDER_DUST = registerEndItem("ender_dust");

View file

@ -1,10 +1,6 @@
package ru.betterend.registry; package ru.betterend.registry;
import java.util.List;
import java.util.function.Supplier;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import net.fabricmc.fabric.api.tag.TagRegistry; import net.fabricmc.fabric.api.tag.TagRegistry;
import net.fabricmc.fabric.impl.tool.attribute.ToolManagerImpl; import net.fabricmc.fabric.impl.tool.attribute.ToolManagerImpl;
import net.fabricmc.fabric.impl.tool.attribute.handlers.ModdedToolsVanillaBlocksToolHandler; 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.Tag.Named;
import net.minecraft.tags.TagCollection; import net.minecraft.tags.TagCollection;
import net.minecraft.world.food.FoodProperties; import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.biome.Biome.BiomeCategory; 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.item.tool.EndHammerItem;
import ru.betterend.mixin.common.ComposterBlockAccessor; import ru.betterend.mixin.common.ComposterBlockAccessor;
import java.util.List;
import java.util.function.Supplier;
@SuppressWarnings("unused")
public class EndTags { public class EndTags {
// Table with common (c) tags: // Table with common (c) tags:
// https://fabricmc.net/wiki/tutorial:tags // https://fabricmc.net/wiki/tutorial:tags
@ -82,8 +81,7 @@ public class EndTags {
TagAPI.addEndGround(EndBlocks.ENDSTONE_DUST); TagAPI.addEndGround(EndBlocks.ENDSTONE_DUST);
TagAPI.addEndGround(EndBlocks.AMBER_ORE); TagAPI.addEndGround(EndBlocks.AMBER_ORE);
EndBlocks.getModBlocks().forEach(blockItem -> { EndBlocks.getModBlocks().forEach(block -> {
Block block = ((BlockItem) blockItem).getBlock();
if (block instanceof EndTerrainBlock) { if (block instanceof EndTerrainBlock) {
TagAPI.addEndGround(block); TagAPI.addEndGround(block);
TagHelper.addTag(BlockTags.NYLIUM, block); TagHelper.addTag(BlockTags.NYLIUM, block);