Compare commits

...

2 Commits

Author SHA1 Message Date
b52b49a468
Allow computer terminal tick timer to be changed 2025-01-07 00:42:05 +07:00
0298968042
Mark alignButtons as private 2025-01-07 00:05:13 +07:00
4 changed files with 51 additions and 5 deletions

View File

@ -62,6 +62,7 @@ private fun decoratives(provider: MatteryLanguageProvider) {
with(provider.english) { with(provider.english) {
misc("computer_terminal_tooltip", "Can be used as Redstone button, except it sends signal to block behind it, not under") misc("computer_terminal_tooltip", "Can be used as Redstone button, except it sends signal to block behind it, not under")
misc("computer_terminal_tooltip1", "To setup how long it sends redstone signal, interact with it while sneaking")
misc("decorative", "Decorative") misc("decorative", "Decorative")
add(MItems.CARGO_CRATE_MINECARTS[null]!!, "Minecart with Cargo Crate") add(MItems.CARGO_CRATE_MINECARTS[null]!!, "Minecart with Cargo Crate")
@ -860,6 +861,8 @@ private fun androidFeatures(provider: MatteryLanguageProvider) {
private fun gui(provider: MatteryLanguageProvider) { private fun gui(provider: MatteryLanguageProvider) {
with(provider.english) { with(provider.english) {
gui("tick_timer_set", "Timer set to %s ticks")
gui("black_hole_generator.help0", "Generates energy using angular momentum of Singularities") gui("black_hole_generator.help0", "Generates energy using angular momentum of Singularities")
gui("black_hole_generator.help1", "The stronger gravity Singularity has, the more power is generated!") gui("black_hole_generator.help1", "The stronger gravity Singularity has, the more power is generated!")
gui("black_hole_generator.help2", "Using Spacetime Normalizers will reduce gravitation strength of Singularity, which will reduce power output.") gui("black_hole_generator.help2", "Using Spacetime Normalizers will reduce gravitation strength of Singularity, which will reduce power output.")

View File

@ -65,6 +65,7 @@ private fun decoratives(provider: MatteryLanguageProvider) {
add(MRegistry.TRITANIUM_PRESSURE_PLATE.block, "description1", HIGH_BLAST_RESISTANCE) add(MRegistry.TRITANIUM_PRESSURE_PLATE.block, "description1", HIGH_BLAST_RESISTANCE)
misc("computer_terminal_tooltip", "Может быть использован как кнопка, с оговоркой что он посылает сигнал блоку сзади, а не под ним") misc("computer_terminal_tooltip", "Может быть использован как кнопка, с оговоркой что он посылает сигнал блоку сзади, а не под ним")
misc("computer_terminal_tooltip1", "Для настройки таймера взаимодействуйте будучи крадясь")
misc("decorative", "Элемент декора") misc("decorative", "Элемент декора")
add(MBlocks.GRILL[null]!!, "Мангал-дипломат") add(MBlocks.GRILL[null]!!, "Мангал-дипломат")
@ -861,6 +862,8 @@ private fun androidFeatures(provider: MatteryLanguageProvider) {
private fun gui(provider: MatteryLanguageProvider) { private fun gui(provider: MatteryLanguageProvider) {
with(provider.russian) { with(provider.russian) {
gui("tick_timer_set", "Таймер установлен на %s тиков")
gui("black_hole_generator.help0", "Генерирует электричество используя угловое ускорение сингулярностей") gui("black_hole_generator.help0", "Генерирует электричество используя угловое ускорение сингулярностей")
gui("black_hole_generator.help1", "Чем сильнее гравитационное поле сингулярности, тем больше генерация!") gui("black_hole_generator.help1", "Чем сильнее гравитационное поле сингулярности, тем больше генерация!")
gui("black_hole_generator.help2", "Использование стабилизаторов пространства-времени ослабляет гравитационное поле, снижая генерацию") gui("black_hole_generator.help2", "Использование стабилизаторов пространства-времени ослабляет гравитационное поле, снижая генерацию")

View File

@ -8,6 +8,7 @@ import net.minecraft.sounds.SoundEvent
import net.minecraft.sounds.SoundEvents import net.minecraft.sounds.SoundEvents
import net.minecraft.sounds.SoundSource import net.minecraft.sounds.SoundSource
import net.minecraft.util.RandomSource import net.minecraft.util.RandomSource
import net.minecraft.util.StringRepresentable
import net.minecraft.world.InteractionResult import net.minecraft.world.InteractionResult
import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.player.Player
import net.minecraft.world.item.DyeColor import net.minecraft.world.item.DyeColor
@ -19,6 +20,7 @@ import net.minecraft.world.level.block.SoundType
import net.minecraft.world.level.block.state.BlockState import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.level.block.state.StateDefinition 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.BlockStateProperties
import net.minecraft.world.level.block.state.properties.EnumProperty
import net.minecraft.world.level.gameevent.GameEvent import net.minecraft.world.level.gameevent.GameEvent
import net.minecraft.world.level.material.MapColor import net.minecraft.world.level.material.MapColor
import net.minecraft.world.phys.BlockHitResult import net.minecraft.world.phys.BlockHitResult
@ -42,12 +44,13 @@ class ComputerTerminalBlock(val color: DyeColor?) : RotatableMatteryBlock(
private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.COMPUTER_TERMINAL.rotateFromNorth(it[rotationProperty]).computeShape() } private val shapes = getShapeForEachState(rotationProperty) { BlockShapes.COMPUTER_TERMINAL.rotateFromNorth(it[rotationProperty]).computeShape() }
init { init {
registerDefaultState(defaultBlockState().set(BlockStateProperties.POWERED, false)) registerDefaultState(defaultBlockState().set(BlockStateProperties.POWERED, false).set(TICKS, TickTimer.TICK_20))
} }
override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) { override fun createBlockStateDefinition(builder: StateDefinition.Builder<Block, BlockState>) {
super.createBlockStateDefinition(builder) super.createBlockStateDefinition(builder)
builder.add(BlockStateProperties.POWERED) builder.add(BlockStateProperties.POWERED)
builder.add(TICKS)
} }
override fun getSignal(p_60483_: BlockState, p_60484_: BlockGetter, p_60485_: BlockPos, p_60486_: Direction): Int { override fun getSignal(p_60483_: BlockState, p_60484_: BlockGetter, p_60485_: BlockPos, p_60486_: Direction): Int {
@ -81,12 +84,30 @@ class ComputerTerminalBlock(val color: DyeColor?) : RotatableMatteryBlock(
ply: Player, ply: Player,
blockHitResult: BlockHitResult blockHitResult: BlockHitResult
): InteractionResult { ): InteractionResult {
if (ply.isShiftKeyDown) {
val current = blockState[TICKS]
val next = TickTimer.entries.getOrElse(current.ordinal + 1) { TickTimer.TICK_2 }
level.playSound(ply, blockPos, SoundEvents.DISPENSER_FAIL, SoundSource.BLOCKS, 1f, 1f)
level.gameEvent(ply, GameEvent.BLOCK_ACTIVATE, blockPos)
if (!level.isClientSide) {
ply.sendSystemMessage(TranslatableComponent("otm.gui.tick_timer_set", next.ticks.toString()))
level.setBlock(blockPos, blockState.set(TICKS, next), UPDATE_ALL)
}
return InteractionResult.sidedSuccess(level.isClientSide)
}
if (blockState[BlockStateProperties.POWERED]) { if (blockState[BlockStateProperties.POWERED]) {
return InteractionResult.CONSUME return InteractionResult.CONSUME
} else { } else {
level.setBlock(blockPos, blockState.set(BlockStateProperties.POWERED, true), UPDATE_ALL) if (!level.isClientSide) {
updateNeighbours(blockState, blockPos, level) level.setBlock(blockPos, blockState.set(BlockStateProperties.POWERED, true), UPDATE_ALL)
level.scheduleTick(blockPos, this, 40) updateNeighbours(blockState, blockPos, level)
level.scheduleTick(blockPos, this, blockState[TICKS].ticks)
}
level.playSound(ply, blockPos, SoundEvents.STONE_BUTTON_CLICK_ON, SoundSource.BLOCKS, 1f, 1f) level.playSound(ply, blockPos, SoundEvents.STONE_BUTTON_CLICK_ON, SoundSource.BLOCKS, 1f, 1f)
level.gameEvent(ply, GameEvent.BLOCK_ACTIVATE, blockPos) level.gameEvent(ply, GameEvent.BLOCK_ACTIVATE, blockPos)
return InteractionResult.sidedSuccess(level.isClientSide) return InteractionResult.sidedSuccess(level.isClientSide)
@ -107,6 +128,7 @@ class ComputerTerminalBlock(val color: DyeColor?) : RotatableMatteryBlock(
init { init {
tooltips.add(TranslatableComponent("otm.decorative").withStyle(ChatFormatting.GRAY)) tooltips.add(TranslatableComponent("otm.decorative").withStyle(ChatFormatting.GRAY))
tooltips.add(TranslatableComponent("otm.computer_terminal_tooltip").withStyle(ChatFormatting.GRAY)) tooltips.add(TranslatableComponent("otm.computer_terminal_tooltip").withStyle(ChatFormatting.GRAY))
tooltips.add(TranslatableComponent("otm.computer_terminal_tooltip1").withStyle(ChatFormatting.GRAY))
tooltips.painted(color) tooltips.painted(color)
} }
@ -118,4 +140,22 @@ class ComputerTerminalBlock(val color: DyeColor?) : RotatableMatteryBlock(
): VoxelShape { ): VoxelShape {
return shapes[state]!! return shapes[state]!!
} }
enum class TickTimer(val ticks: Int) : StringRepresentable {
TICK_2(2),
TICK_10(10),
TICK_20(20),
TICK_30(30),
TICK_40(40);
private val str = ticks.toString()
override fun getSerializedName(): String {
return str
}
}
companion object {
val TICKS: EnumProperty<TickTimer> = EnumProperty.create("ticks", TickTimer::class.java)
}
} }

View File

@ -341,7 +341,7 @@ class DeviceControls<out S : MatteryScreen<*>>(
private val buttons = ArrayList<EditablePanel<S>>() private val buttons = ArrayList<EditablePanel<S>>()
fun alignButtons() { private fun alignButtons() {
buttons.removeIf { it.isRemoved || it.parent != this } buttons.removeIf { it.isRemoved || it.parent != this }
var y = 0f var y = 0f