Holo screen locale, api docs
This commit is contained in:
parent
46f0b1bf59
commit
ac2deefcae
@ -116,6 +116,9 @@ private fun sounds(provider: MatteryLanguageProvider) {
|
||||
|
||||
private fun misc(provider: MatteryLanguageProvider) {
|
||||
with(provider.english) {
|
||||
gui("lock_holo_screen", "Lock contents")
|
||||
gui("lock_holo_screen.tip", "Locking and unlocking contents is only possible in creative.\nWhen locked, text boundaries are removed.")
|
||||
|
||||
gui("ticks", "Ticks")
|
||||
|
||||
gui("power_cost_per_use", "Power cost per use: %s")
|
||||
|
@ -125,6 +125,9 @@ private fun sounds(provider: MatteryLanguageProvider) {
|
||||
|
||||
private fun misc(provider: MatteryLanguageProvider) {
|
||||
with(provider.russian) {
|
||||
gui("lock_holo_screen", "Заблокировать содержимое")
|
||||
gui("lock_holo_screen.tip", "Блокировка и разблокировка содержимого возможна только в режиме творчества.\nКогда заблокировано, границы ввода текста отключены.")
|
||||
|
||||
gui("ticks", "Тиков")
|
||||
|
||||
gui("power_cost_per_use", "Энергии на операцию: %s")
|
||||
|
@ -22,6 +22,7 @@ class HoloSignScreen(menu: HoloSignMenu, inventory: Inventory, title: Component)
|
||||
val lock = CheckBoxLabelInputPanel(this, frame, menu.locked, TranslatableComponent("otm.gui.lock_holo_screen"))
|
||||
lock.dock = Dock.BOTTOM
|
||||
lock.dockMargin = DockProperty(2f, 2f, 2f, 2f)
|
||||
lock.tooltip = TranslatableComponent("otm.gui.lock_holo_screen.tip")
|
||||
|
||||
return frame
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ import net.minecraft.world.level.block.entity.BlockEntity
|
||||
import net.minecraftforge.network.NetworkEvent
|
||||
import net.minecraftforge.network.PacketDistributor
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.compat.cos.cosmeticArmorSlots
|
||||
import ru.dbotthepony.mc.otm.compat.curios.isCurioSlot
|
||||
import ru.dbotthepony.mc.otm.container.ItemFilter
|
||||
@ -50,7 +51,7 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
|
||||
val tile: BlockEntity? = null
|
||||
) : AbstractContainerMenu(menuType, containerId) {
|
||||
/**
|
||||
* Server->Client field synchronizer
|
||||
* Server->Client synchronizer
|
||||
*/
|
||||
val mSynchronizer = FieldSynchronizer()
|
||||
val ply: Player get() = inventory.player
|
||||
@ -90,7 +91,7 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
|
||||
}
|
||||
|
||||
/**
|
||||
* Client->Server handler
|
||||
* Client->Server input
|
||||
*/
|
||||
inner class PlayerInput<V>(val codec: IStreamCodec<V>, allowSpectators: Boolean = false, val handler: (V) -> Unit) : Predicate<Player?> {
|
||||
val id = playerInputs.size
|
||||
@ -117,15 +118,11 @@ abstract class MatteryMenu @JvmOverloads protected constructor(
|
||||
}
|
||||
|
||||
fun input(value: V) {
|
||||
if (test(minecraft.player as Player?)) {
|
||||
val stream = FastByteArrayOutputStream()
|
||||
codec.write(DataOutputStream(stream), value)
|
||||
MenuNetworkChannel.sendToServer(PlayerInputPacket(containerId, id, stream.array.copyOfRange(0, stream.length)))
|
||||
}
|
||||
|
||||
fun checkedInput(value: V, player: Player?) {
|
||||
if (allowSpectators || player?.isSpectator == false) {
|
||||
return input(value)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun invoke(value: Any?) {
|
||||
|
@ -17,6 +17,7 @@ class HoloSignMenu @JvmOverloads constructor(
|
||||
val locked = BooleanInputWithFeedback(this)
|
||||
|
||||
init {
|
||||
text.filter { it.isCreative || !locked.value }
|
||||
locked.filter { it.isCreative }
|
||||
|
||||
if (tile != null) {
|
||||
|
@ -9,9 +9,16 @@ import java.util.function.Predicate
|
||||
import java.util.function.Supplier
|
||||
import kotlin.reflect.KMutableProperty0
|
||||
|
||||
/**
|
||||
* Represents Server to Client synchronization and Client to Server input
|
||||
*
|
||||
* Getting and setting values should ONLY be done clientside
|
||||
*/
|
||||
interface IPlayerInputWithFeedback<V> : GetterSetter<V>, Predicate<Player?>
|
||||
|
||||
/**
|
||||
* Represents Server to Client synchronization and Client to Server input
|
||||
*
|
||||
* Getting and setting values should ONLY be done clientside
|
||||
*/
|
||||
abstract class AbstractPlayerInputWithFeedback<V> : IPlayerInputWithFeedback<V> {
|
||||
@ -23,7 +30,7 @@ abstract class AbstractPlayerInputWithFeedback<V> : IPlayerInputWithFeedback<V>
|
||||
}
|
||||
|
||||
override fun accept(t: V) {
|
||||
input.checkedInput(t, minecraft.player as Player?)
|
||||
input.input(t)
|
||||
}
|
||||
|
||||
override fun test(player: Player?) = input.test(player)
|
||||
|
Loading…
Reference in New Issue
Block a user