re-enable custom tick functions for furnaces
This commit is contained in:
parent
1d64b215f4
commit
b54b14782e
2 changed files with 30 additions and 9 deletions
|
@ -0,0 +1,9 @@
|
|||
package ru.bclib.blockentities;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public interface CustomTickBlockEntity {
|
||||
void customTick(Level level, BlockPos pos, BlockState state);
|
||||
}
|
|
@ -1,7 +1,17 @@
|
|||
package ru.bclib.blocks;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityTicker;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
|
@ -13,18 +23,16 @@ import net.minecraft.stats.Stats;
|
|||
import net.minecraft.world.MenuProvider;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
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.FurnaceBlock;
|
||||
import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityTicker;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
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 org.jetbrains.annotations.Nullable;
|
||||
import ru.bclib.blockentities.BaseFurnaceBlockEntity;
|
||||
import ru.bclib.blockentities.CustomTickBlockEntity;
|
||||
import ru.bclib.client.models.BasePatterns;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
|
@ -33,10 +41,6 @@ import ru.bclib.client.render.BCLRenderLayer;
|
|||
import ru.bclib.interfaces.IRenderTyped;
|
||||
import ru.bclib.registry.BaseBlockEntities;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider, IRenderTyped {
|
||||
public BaseFurnaceBlock(Block source) {
|
||||
super(FabricBlockSettings.copyOf(source).luminance(state -> state.getValue(LIT) ? 13 : 0));
|
||||
|
@ -111,6 +115,14 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider
|
|||
return drop;
|
||||
}
|
||||
|
||||
public static <T extends BlockEntity> void serverTick(Level level, BlockPos pos, BlockState state, T blockEntity) {
|
||||
if (blockEntity instanceof CustomTickBlockEntity){
|
||||
((CustomTickBlockEntity)blockEntity).customTick(level, pos, state);
|
||||
} else {
|
||||
AbstractFurnaceBlockEntity.serverTick(level, pos, state, (AbstractFurnaceBlockEntity) blockEntity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState blockState, BlockEntityType<T> blockEntityType) {
|
||||
|
@ -119,6 +131,6 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider
|
|||
|
||||
@Nullable
|
||||
protected static <T extends BlockEntity> BlockEntityTicker<T> createFurnaceTicker(Level level, BlockEntityType<T> blockEntityType, BlockEntityType<? extends AbstractFurnaceBlockEntity> blockEntityType2) {
|
||||
return level.isClientSide ? null : createTickerHelper(blockEntityType, blockEntityType2, AbstractFurnaceBlockEntity::serverTick);
|
||||
return level.isClientSide ? null : createTickerHelper(blockEntityType, blockEntityType2, BaseFurnaceBlock::serverTick);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue