mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-09-01 18:17:55 +00:00
Correctly instantiate blocks with their BE type
Previously new blocks were being passed their BlockEntityType directly when constructed. However, due to the circular dependency between block entities and blocks, the BlocKEntityType was null. Normally this'd mean that no BE was created when the block is placed. However, Block.newBlockEntity was overridden on all subclasses to ensure that the correct BE was created, /except/ for command computers, which just returned a normal computer TE. This changes all the block constructrs to accept a Supplier<BlockEntityType<?>>, and always uses this to create the block entity. Fixes #23.
This commit is contained in:
@@ -95,31 +95,31 @@ public final class ComputerCraftRegistry
|
||||
public static final class ModBlocks
|
||||
{
|
||||
public static final BlockComputer COMPUTER_NORMAL = register( "computer_normal",
|
||||
new BlockComputer( properties(), ComputerFamily.NORMAL, ComputerCraftRegistry.ModTiles.COMPUTER_NORMAL ) );
|
||||
new BlockComputer( properties(), ComputerFamily.NORMAL, () -> ComputerCraftRegistry.ModTiles.COMPUTER_NORMAL ) );
|
||||
public static final BlockComputer COMPUTER_ADVANCED = register( "computer_advanced",
|
||||
new BlockComputer( properties(),
|
||||
ComputerFamily.ADVANCED,
|
||||
ComputerCraftRegistry.ModTiles.COMPUTER_ADVANCED ) );
|
||||
() -> ComputerCraftRegistry.ModTiles.COMPUTER_ADVANCED ) );
|
||||
public static final BlockComputer COMPUTER_COMMAND = register( "computer_command",
|
||||
new BlockComputer( FabricBlockSettings.copyOf( Blocks.STONE )
|
||||
.strength( -1, 6000000.0F ),
|
||||
ComputerFamily.COMMAND,
|
||||
ComputerCraftRegistry.ModTiles.COMPUTER_COMMAND ) );
|
||||
() -> ComputerCraftRegistry.ModTiles.COMPUTER_COMMAND ) );
|
||||
public static final BlockTurtle TURTLE_NORMAL = register( "turtle_normal",
|
||||
new BlockTurtle( turtleProperties(), ComputerFamily.NORMAL, ComputerCraftRegistry.ModTiles.TURTLE_NORMAL ) );
|
||||
new BlockTurtle( turtleProperties(), ComputerFamily.NORMAL, () -> ModTiles.TURTLE_NORMAL ) );
|
||||
public static final BlockTurtle TURTLE_ADVANCED = register( "turtle_advanced",
|
||||
new BlockTurtle( turtleProperties(), ComputerFamily.ADVANCED, ComputerCraftRegistry.ModTiles.TURTLE_ADVANCED ) );
|
||||
new BlockTurtle( turtleProperties(), ComputerFamily.ADVANCED, () -> ModTiles.TURTLE_ADVANCED ) );
|
||||
public static final BlockSpeaker SPEAKER = register( "speaker", new BlockSpeaker( properties() ) );
|
||||
public static final BlockDiskDrive DISK_DRIVE = register( "disk_drive", new BlockDiskDrive( properties() ) );
|
||||
public static final BlockPrinter PRINTER = register( "printer", new BlockPrinter( properties() ) );
|
||||
public static final BlockMonitor MONITOR_NORMAL = register( "monitor_normal", new BlockMonitor( properties(), ModTiles.MONITOR_NORMAL, false ) );
|
||||
public static final BlockMonitor MONITOR_ADVANCED = register( "monitor_advanced", new BlockMonitor( properties(), ModTiles.MONITOR_ADVANCED, true ) );
|
||||
public static final BlockMonitor MONITOR_NORMAL = register( "monitor_normal", new BlockMonitor( properties(), () -> ModTiles.MONITOR_NORMAL, false ) );
|
||||
public static final BlockMonitor MONITOR_ADVANCED = register( "monitor_advanced", new BlockMonitor( properties(), () -> ModTiles.MONITOR_ADVANCED, true ) );
|
||||
public static final BlockWirelessModem WIRELESS_MODEM_NORMAL = register( "wireless_modem_normal",
|
||||
new BlockWirelessModem( properties(), ComputerCraftRegistry.ModTiles.WIRELESS_MODEM_NORMAL, ComputerFamily.NORMAL ) );
|
||||
new BlockWirelessModem( properties(), () -> ModTiles.WIRELESS_MODEM_NORMAL, ComputerFamily.NORMAL ) );
|
||||
public static final BlockWirelessModem WIRELESS_MODEM_ADVANCED = register( "wireless_modem_advanced",
|
||||
new BlockWirelessModem( properties(), ComputerCraftRegistry.ModTiles.WIRELESS_MODEM_ADVANCED, ComputerFamily.ADVANCED ) );
|
||||
new BlockWirelessModem( properties(), () -> ModTiles.WIRELESS_MODEM_ADVANCED, ComputerFamily.ADVANCED ) );
|
||||
public static final BlockWiredModemFull WIRED_MODEM_FULL = register( "wired_modem_full",
|
||||
new BlockWiredModemFull( modemProperties(), ComputerCraftRegistry.ModTiles.WIRED_MODEM_FULL ) );
|
||||
new BlockWiredModemFull( modemProperties(), () -> ModTiles.WIRED_MODEM_FULL ) );
|
||||
public static final BlockCable CABLE = register( "cable", new BlockCable( modemProperties() ) );
|
||||
|
||||
private static BlockBehaviour.Properties properties()
|
||||
|
@@ -23,20 +23,22 @@ import net.minecraft.world.phys.BlockHitResult;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Random;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public abstract class BlockGeneric extends BaseEntityBlock
|
||||
{
|
||||
private final BlockEntityType<? extends TileGeneric> type;
|
||||
private final Supplier<? extends BlockEntityType<? extends TileGeneric>> type;
|
||||
|
||||
public BlockGeneric( Properties settings, BlockEntityType<? extends TileGeneric> type )
|
||||
public BlockGeneric( Properties settings, @Nonnull Supplier<? extends BlockEntityType<? extends TileGeneric>> type )
|
||||
{
|
||||
super( settings );
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public BlockEntityType<? extends TileGeneric> getType()
|
||||
{
|
||||
return type;
|
||||
return type.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -98,12 +100,8 @@ public abstract class BlockGeneric extends BaseEntityBlock
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity( BlockPos pos, BlockState state )
|
||||
public final BlockEntity newBlockEntity( @Nonnull BlockPos pos, @Nonnull BlockState state )
|
||||
{
|
||||
if( this.type != null )
|
||||
{
|
||||
return type.create( pos, state );
|
||||
}
|
||||
return null;
|
||||
return type.get().create( pos, state );
|
||||
}
|
||||
}
|
||||
|
@@ -6,16 +6,13 @@
|
||||
|
||||
package dan200.computercraft.shared.computer.blocks;
|
||||
|
||||
import dan200.computercraft.shared.ComputerCraftRegistry;
|
||||
import dan200.computercraft.shared.computer.core.ComputerFamily;
|
||||
import dan200.computercraft.shared.computer.core.ComputerState;
|
||||
import dan200.computercraft.shared.computer.items.ComputerItemFactory;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
@@ -25,13 +22,14 @@ import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class BlockComputer extends BlockComputerBase<TileComputer>
|
||||
{
|
||||
public static final EnumProperty<ComputerState> STATE = EnumProperty.create( "state", ComputerState.class );
|
||||
public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING;
|
||||
|
||||
public BlockComputer( Properties settings, ComputerFamily family, BlockEntityType<? extends TileComputer> type )
|
||||
public BlockComputer( Properties settings, ComputerFamily family, Supplier<BlockEntityType<? extends TileComputer>> type )
|
||||
{
|
||||
super( settings, family, type );
|
||||
registerDefaultState( defaultBlockState().setValue( FACING, Direction.NORTH )
|
||||
@@ -59,21 +57,4 @@ public class BlockComputer extends BlockComputerBase<TileComputer>
|
||||
{
|
||||
return tile instanceof TileComputer ? ComputerItemFactory.create( (TileComputer) tile ) : ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
public BlockEntityType<? extends TileComputer> getTypeByFamily( ComputerFamily family )
|
||||
{
|
||||
return switch( family )
|
||||
{
|
||||
case COMMAND -> ComputerCraftRegistry.ModTiles.COMPUTER_COMMAND;
|
||||
case ADVANCED -> ComputerCraftRegistry.ModTiles.COMPUTER_ADVANCED;
|
||||
default -> ComputerCraftRegistry.ModTiles.COMPUTER_NORMAL;
|
||||
};
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity( BlockPos pos, BlockState state )
|
||||
{
|
||||
return new TileComputer( getFamily(), getTypeByFamily( getFamily() ), pos, state );
|
||||
}
|
||||
}
|
||||
|
@@ -33,6 +33,7 @@ import net.minecraft.world.phys.Vec3;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public abstract class BlockComputerBase<T extends TileComputerBase> extends BlockGeneric implements IBundledRedstoneBlock
|
||||
{
|
||||
@@ -40,12 +41,20 @@ public abstract class BlockComputerBase<T extends TileComputerBase> extends Bloc
|
||||
|
||||
private final ComputerFamily family;
|
||||
|
||||
protected BlockComputerBase( Properties settings, ComputerFamily family, BlockEntityType<? extends T> type )
|
||||
protected BlockComputerBase( Properties settings, ComputerFamily family, Supplier<BlockEntityType<? extends T>> type )
|
||||
{
|
||||
super( settings, type );
|
||||
this.family = family;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings( "unchecked" )
|
||||
public BlockEntityType<? extends T> getType()
|
||||
{
|
||||
return (BlockEntityType<? extends T>) super.getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public void onPlace( @Nonnull BlockState state, @Nonnull Level world, @Nonnull BlockPos pos, @Nonnull BlockState oldState, boolean isMoving )
|
||||
|
@@ -37,7 +37,7 @@ public class BlockDiskDrive extends BlockGeneric
|
||||
|
||||
public BlockDiskDrive( Properties settings )
|
||||
{
|
||||
super( settings, ComputerCraftRegistry.ModTiles.DISK_DRIVE );
|
||||
super( settings, () -> ComputerCraftRegistry.ModTiles.DISK_DRIVE );
|
||||
registerDefaultState( getStateDefinition().any()
|
||||
.setValue( FACING, Direction.NORTH )
|
||||
.setValue( STATE, DiskDriveState.EMPTY ) );
|
||||
@@ -97,11 +97,4 @@ public class BlockDiskDrive extends BlockGeneric
|
||||
{
|
||||
properties.add( FACING, STATE );
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity( BlockPos pos, BlockState state )
|
||||
{
|
||||
return new TileDiskDrive( ComputerCraftRegistry.ModTiles.DISK_DRIVE, pos, state );
|
||||
}
|
||||
}
|
||||
|
@@ -66,7 +66,7 @@ public class BlockCable extends BlockGeneric implements SimpleWaterloggedBlock,
|
||||
|
||||
public BlockCable( Properties settings )
|
||||
{
|
||||
super( settings, ComputerCraftRegistry.ModTiles.CABLE );
|
||||
super( settings, () -> ComputerCraftRegistry.ModTiles.CABLE );
|
||||
|
||||
registerDefaultState( getStateDefinition().any()
|
||||
.setValue( MODEM, CableModemVariant.None )
|
||||
@@ -270,11 +270,4 @@ public class BlockCable extends BlockGeneric implements SimpleWaterloggedBlock,
|
||||
.setValue( DOWN, false );
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity( BlockPos pos, BlockState state )
|
||||
{
|
||||
return new TileCable( ComputerCraftRegistry.ModTiles.CABLE, pos, state );
|
||||
}
|
||||
}
|
||||
|
@@ -6,24 +6,21 @@
|
||||
|
||||
package dan200.computercraft.shared.peripheral.modem.wired;
|
||||
|
||||
import dan200.computercraft.shared.ComputerCraftRegistry;
|
||||
import dan200.computercraft.shared.common.BlockGeneric;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
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 javax.annotation.Nullable;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class BlockWiredModemFull extends BlockGeneric
|
||||
{
|
||||
public static final BooleanProperty MODEM_ON = BooleanProperty.create( "modem" );
|
||||
public static final BooleanProperty PERIPHERAL_ON = BooleanProperty.create( "peripheral" );
|
||||
|
||||
public BlockWiredModemFull( Properties settings, BlockEntityType<? extends TileWiredModemFull> type )
|
||||
public BlockWiredModemFull( Properties settings, Supplier<BlockEntityType<? extends TileWiredModemFull>> type )
|
||||
{
|
||||
super( settings, type );
|
||||
registerDefaultState( getStateDefinition().any()
|
||||
@@ -36,11 +33,4 @@ public class BlockWiredModemFull extends BlockGeneric
|
||||
{
|
||||
builder.add( MODEM_ON, PERIPHERAL_ON );
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity( BlockPos pos, BlockState state )
|
||||
{
|
||||
return new TileWiredModemFull( ComputerCraftRegistry.ModTiles.WIRED_MODEM_FULL, pos, state );
|
||||
}
|
||||
}
|
||||
|
@@ -6,7 +6,6 @@
|
||||
|
||||
package dan200.computercraft.shared.peripheral.modem.wireless;
|
||||
|
||||
import dan200.computercraft.shared.ComputerCraftRegistry;
|
||||
import dan200.computercraft.shared.common.BlockGeneric;
|
||||
import dan200.computercraft.shared.computer.core.ComputerFamily;
|
||||
import dan200.computercraft.shared.peripheral.modem.ModemShapes;
|
||||
@@ -18,7 +17,6 @@ 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.SimpleWaterloggedBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
@@ -31,6 +29,7 @@ import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static dan200.computercraft.shared.util.WaterloggableHelpers.*;
|
||||
|
||||
@@ -41,7 +40,7 @@ public class BlockWirelessModem extends BlockGeneric implements SimpleWaterlogge
|
||||
|
||||
private final ComputerFamily family;
|
||||
|
||||
public BlockWirelessModem( Properties settings, BlockEntityType<? extends TileWirelessModem> type, ComputerFamily family )
|
||||
public BlockWirelessModem( Properties settings, Supplier<BlockEntityType<? extends TileWirelessModem>> type, ComputerFamily family )
|
||||
{
|
||||
super( settings, type );
|
||||
this.family = family;
|
||||
@@ -101,20 +100,4 @@ public class BlockWirelessModem extends BlockGeneric implements SimpleWaterlogge
|
||||
{
|
||||
builder.add( FACING, ON, WATERLOGGED );
|
||||
}
|
||||
|
||||
public BlockEntityType<? extends TileWirelessModem> getTypeByFamily( ComputerFamily family )
|
||||
{
|
||||
return switch( family )
|
||||
{
|
||||
case ADVANCED -> ComputerCraftRegistry.ModTiles.WIRELESS_MODEM_ADVANCED;
|
||||
default -> ComputerCraftRegistry.ModTiles.WIRELESS_MODEM_NORMAL;
|
||||
};
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity( BlockPos pos, BlockState state )
|
||||
{
|
||||
return new TileWirelessModem( getTypeByFamily( family ), family == ComputerFamily.ADVANCED, pos, state );
|
||||
}
|
||||
}
|
||||
|
@@ -7,7 +7,6 @@
|
||||
package dan200.computercraft.shared.peripheral.monitor;
|
||||
|
||||
import dan200.computercraft.api.turtle.FakePlayer;
|
||||
import dan200.computercraft.shared.ComputerCraftRegistry;
|
||||
import dan200.computercraft.shared.common.BlockGeneric;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -26,6 +25,7 @@ import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class BlockMonitor extends BlockGeneric
|
||||
{
|
||||
@@ -37,7 +37,7 @@ public class BlockMonitor extends BlockGeneric
|
||||
|
||||
public boolean advanced;
|
||||
|
||||
public BlockMonitor( Properties settings, BlockEntityType<? extends TileMonitor> type, boolean advanced )
|
||||
public BlockMonitor( Properties settings, Supplier<BlockEntityType<? extends TileMonitor>> type, boolean advanced )
|
||||
{
|
||||
super( settings, type );
|
||||
this.advanced = advanced;
|
||||
@@ -100,11 +100,4 @@ public class BlockMonitor extends BlockGeneric
|
||||
{
|
||||
builder.add( ORIENTATION, FACING, STATE );
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity( BlockPos pos, BlockState state )
|
||||
{
|
||||
return new TileMonitor( advanced ? ComputerCraftRegistry.ModTiles.MONITOR_ADVANCED : ComputerCraftRegistry.ModTiles.MONITOR_NORMAL, advanced, pos, state );
|
||||
}
|
||||
}
|
||||
|
@@ -36,7 +36,7 @@ public class BlockPrinter extends BlockGeneric
|
||||
|
||||
public BlockPrinter( Properties settings )
|
||||
{
|
||||
super( settings, ComputerCraftRegistry.ModTiles.PRINTER );
|
||||
super( settings, () -> ComputerCraftRegistry.ModTiles.PRINTER );
|
||||
registerDefaultState( getStateDefinition().any()
|
||||
.setValue( FACING, Direction.NORTH )
|
||||
.setValue( TOP, false )
|
||||
@@ -88,11 +88,4 @@ public class BlockPrinter extends BlockGeneric
|
||||
{
|
||||
properties.add( FACING, TOP, BOTTOM );
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity( BlockPos pos, BlockState state )
|
||||
{
|
||||
return new TilePrinter( ComputerCraftRegistry.ModTiles.PRINTER, pos, state );
|
||||
}
|
||||
}
|
||||
|
@@ -8,7 +8,6 @@ package dan200.computercraft.shared.peripheral.speaker;
|
||||
|
||||
import dan200.computercraft.shared.ComputerCraftRegistry;
|
||||
import dan200.computercraft.shared.common.BlockGeneric;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
@@ -29,7 +28,7 @@ public class BlockSpeaker extends BlockGeneric
|
||||
|
||||
public BlockSpeaker( Properties settings )
|
||||
{
|
||||
super( settings, ComputerCraftRegistry.ModTiles.SPEAKER );
|
||||
super( settings, () -> ComputerCraftRegistry.ModTiles.SPEAKER );
|
||||
registerDefaultState( getStateDefinition().any()
|
||||
.setValue( FACING, Direction.NORTH ) );
|
||||
}
|
||||
@@ -49,13 +48,6 @@ public class BlockSpeaker extends BlockGeneric
|
||||
properties.add( FACING );
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity( BlockPos pos, BlockState state )
|
||||
{
|
||||
return new TileSpeaker( ComputerCraftRegistry.ModTiles.SPEAKER, pos, state );
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker( Level world, BlockState state, BlockEntityType<T> type )
|
||||
|
@@ -42,6 +42,7 @@ import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static dan200.computercraft.shared.util.WaterloggableHelpers.*;
|
||||
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.WATERLOGGED;
|
||||
@@ -52,7 +53,7 @@ public class BlockTurtle extends BlockComputerBase<TileTurtle> implements Simple
|
||||
|
||||
private static final VoxelShape DEFAULT_SHAPE = Shapes.box( 0.125, 0.125, 0.125, 0.875, 0.875, 0.875 );
|
||||
|
||||
public BlockTurtle( Properties settings, ComputerFamily family, BlockEntityType<? extends TileTurtle> type )
|
||||
public BlockTurtle( Properties settings, ComputerFamily family, Supplier<BlockEntityType<? extends TileTurtle>> type )
|
||||
{
|
||||
super( settings, family, type );
|
||||
registerDefaultState( getStateDefinition().any()
|
||||
@@ -191,17 +192,10 @@ public class BlockTurtle extends BlockComputerBase<TileTurtle> implements Simple
|
||||
return ComputerCraftRegistry.ModTiles.TURTLE_NORMAL;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public BlockEntity newBlockEntity( BlockPos pos, BlockState state )
|
||||
{
|
||||
return new TileTurtle( getTypeByFamily( getFamily() ), pos, state, getFamily() );
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker( Level world, BlockState state, BlockEntityType<T> type )
|
||||
{
|
||||
return world.isClientSide ? BlockTurtle.createTickerHelper( type, getTypeByFamily( getFamily() ), ( world1, pos, state1, computer ) -> computer.clientTick() ) : super.getTicker( world, state, type );
|
||||
return world.isClientSide ? BlockTurtle.createTickerHelper( type, getType(), ( world1, pos, state1, computer ) -> computer.clientTick() ) : super.getTicker( world, state, type );
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user