PlacementRenderer

open class PlacementRenderer(name: String, enabled: Boolean, val module: EventListener, val keep: Boolean = true, clump: Boolean = true, defaultColor: Color4b = Color4b.GREEN.alpha(90)) : ToggleableValueGroup

Render boxes, manages fade-in/-out and culling.

Modules that want to provide a color not set in here can simply extend this class, register all settings except for the color settings, and override the color getters as needed.

Inheritors

Constructors

Link copied to clipboard
constructor(name: String, enabled: Boolean, module: EventListener, keep: Boolean = true, clump: Boolean = true, defaultColor: Color4b = Color4b.GREEN.alpha(90))

Properties

Link copied to clipboard
Link copied to clipboard

Stores the ValueGroup in which the ValueGroup is included, can be null.

Link copied to clipboard
open val baseKey: String

The base key used when base is null, otherwise the baseKey from base is used when its base is null and so on.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
@get:JvmName(name = "getContainedValues")
val containedValues: Array<Value<*>>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

If true, value will not be included in generated public config

Link copied to clipboard
open override var enabled: Boolean
Link copied to clipboard
@get:JvmName(name = "getEnabledValue")
val enabledValue: Value<Boolean>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val EventListener.eventListenerScope: CoroutineScope

Get the related CoroutineScope of receiver EventListener.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val gpuDevice: GpuDevice
Link copied to clipboard
Link copied to clipboard
open val interaction: MultiPlayerGameMode
Link copied to clipboard
val inTime: Int
Link copied to clipboard

If true, value will always keep inner equals defaultValue

Link copied to clipboard
Link copied to clipboard
var key: String?
Link copied to clipboard
open val mc: Minecraft
Link copied to clipboard
Link copied to clipboard
@SerializedName(value = "name")
val name: String
Link copied to clipboard
open val network: ClientPacketListener
Link copied to clipboard

If true, value will not be included in generated RestAPI config

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val player: LocalPlayer
Link copied to clipboard
open override val running: Boolean

Only run when the module and this is enabled or out-animations are running.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val world: ClientLevel

Functions

Link copied to clipboard
fun addBlock(pos: BlockPos, update: Boolean = true, box: AABB = pos.outlineBox, handlerId: Int = 0)

Adds a block to be rendered. First it will make an appear-animation, then it will continue to get rendered until it's removed or the world changes.

Link copied to clipboard
fun asStateFlow(): StateFlow<MutableCollection<Value<*>>>
Link copied to clipboard
fun bind(name: String, default: Int = GLFW.GLFW_KEY_UNKNOWN): BindValue
fun bind(name: String, default: InputBind): BindValue
Link copied to clipboard

Binds to the given input name.

fun Value<InputBind>.bind(key: InputConstants.Key, action: InputBind.BindAction, modifiers: Set<InputBind.Modifier>)

Binds to the given input type and code.

Link copied to clipboard
fun block(name: String, default: Block): Value<Block>
Link copied to clipboard
fun <C : SequencedSet<Block>> blocks(name: String, default: C): RegistryListValue<C, Block>
Link copied to clipboard
fun boolean(name: String, default: Boolean, aliases: List<String> = emptyList()): Value<Boolean>
Link copied to clipboard
fun <C : SequencedSet<Identifier>> c2sPackets(name: String, default: C): RegistryListValue<C, Identifier>
Link copied to clipboard
Link copied to clipboard

Puts all currently rendered positions in the out-animation state and keeps it being rendered until all animations have been finished even though the module might be already disabled.

Link copied to clipboard
fun color(name: String, default: Color4b): Value<Color4b>
Link copied to clipboard
inline fun <E : Event, V> EventListener.computedOn(initialValue: V, priority: Short = 0, crossinline accumulator: (event: E, prev: V) -> V): ReadWriteProperty<EventListener, V>

Returns computed ReadWriteProperty based on the accumulator of specific event.

Link copied to clipboard
open override fun <T : Event> EventListener.createEventHook(eventClass: Class<T>, wrappedContext: CoroutineContext, priority: Short, handler: SuspendableEventHandler<T>): EventHook<T>
open override fun <T : Event> EventListener.createEventHook(eventClass: Class<T>, wrappedContext: CoroutineContext, priority: Short, handler: SuspendableEventHandler<T>): EventHook<T>
Link copied to clipboard
inline fun curve(name: String, block: CurveValue.Builder.() -> Unit): CurveValue
fun curve(name: String, default: MutableList<Vector2f>, xAxis: CurveValue.Axis, yAxis: CurveValue.Axis, tension: Float = CurveValue.DEFAULT_TENSION): CurveValue
Link copied to clipboard
inline fun DebuggedOwner.debugGeometry(name: String, lazyGeometry: () -> ModuleDebug.DebuggedGeometry?)
Link copied to clipboard
inline fun DebuggedOwner.debugParameter(name: String, lazyValue: () -> Any?)
Link copied to clipboard
open fun deserializeFrom(gson: Gson, element: JsonElement)

Deserialize value from JSON

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun <T : ValueGroup> drop(valueGroup: T): T
Link copied to clipboard
fun easing(name: String, default: Easing): ChoiceListValue<Easing>
Link copied to clipboard
fun <C : SequencedSet<EntityType<*>>> entityTypes(name: String, default: C): RegistryListValue<C, EntityType<*>>
Link copied to clipboard
inline fun <T : Enum<T>, Tagged> enumChoice(name: String, default: T): ChoiceListValue<T>
fun <T : Tagged> enumChoice(name: String, default: T, choices: Set<T>): ChoiceListValue<T>
Link copied to clipboard
Link copied to clipboard
fun file(name: String, default: File? = null, dialogMode: FileDialogMode = FileDialogMode.OPEN_FILE, supportedExtensions: Set<String>? = null): FileValue
Link copied to clipboard
fun float(name: String, default: Float, range: ClosedFloatingPointRange<Float>, suffix: String = "", aliases: List<String> = emptyList()): RangedValue<Float>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open fun getColor(id: Int): Color4b

Returns the box color.

Link copied to clipboard
open fun getOutlineColor(id: Int): Color4b

Returns the outline color.

Link copied to clipboard
@JvmName(name = "getTagValue")
fun getTagValue(): Any
Link copied to clipboard
@JvmName(name = "getValue")
fun getValue(): Any

operator fun getValue(u: Any?, property: KProperty<*>): MutableCollection<Value<*>>

Support for delegated properties example: var autoaim by boolean(name = "autoaim", default = true) if(!autoaim) autoaim = true

Link copied to clipboard
inline fun <T : Event> EventListener.handler(priority: Short = 0, handler: Consumer<T>): EventHook<T>
fun <T : Event> EventListener.handler(eventClass: Class<T>, priority: Short = 0, handler: Consumer<T>): EventHook<T>
Link copied to clipboard
Link copied to clipboard
fun int(name: String, default: Int, range: IntRange, suffix: String = "", aliases: List<String> = emptyList()): RangedValue<Int>
Link copied to clipboard
fun intRange(name: String, default: IntRange, range: IntRange, suffix: String = "", aliases: List<String> = emptyList()): RangedValue<IntRange>
Link copied to clipboard
fun item(name: String, default: Item): Value<Item>
Link copied to clipboard
fun <C : SequencedSet<Item>> items(name: String, default: C): RegistryListValue<C, Item>
Link copied to clipboard
fun json(valueObject: JsonObject)

Assigns the value of the settings to the component

Link copied to clipboard
fun key(name: String, default: InputConstants.Key = InputConstants.UNKNOWN): Value<InputConstants.Key>
fun key(name: String, default: Int): Value<InputConstants.Key>
Link copied to clipboard
fun <C : SequencedSet<MobEffect>> mobEffects(name: String, default: C): RegistryListValue<C, MobEffect>
Link copied to clipboard
inline fun <T : Enum<T>, Tagged> multiEnumChoice(name: String, vararg default: T, canBeNone: Boolean = true): MultiChoiceListValue<T?>
inline fun <T : Enum<T>, Tagged> multiEnumChoice(name: String, default: Iterable<T>, canBeNone: Boolean = true): MultiChoiceListValue<T?>
inline fun <T : Enum<T>, Tagged> multiEnumChoice(name: String, default: EnumSet<T> = enumSetOf(), choices: EnumSet<T> = enumSetAllOf(), canBeNone: Boolean = true): MultiChoiceListValue<T?>
inline fun <T : Enum<T>, Tagged> multiEnumChoice(name: String, default: SequencedSet<T>, choices: EnumSet<T> = enumSetAllOf(), canBeNone: Boolean = true): MultiChoiceListValue<T?>
fun <T : Tagged> multiEnumChoice(name: String, default: MutableSet<T>, choices: Set<T>, canBeNone: Boolean, isOrderSensitive: Boolean): MultiChoiceListValue<T>
Link copied to clipboard
inline fun <E : Event> EventListener.newEventHook(priority: Short = 0, handler: Consumer<E>): EventHook<E>
Link copied to clipboard
Link copied to clipboard
inline fun <T : Event> EventListener.once(priority: Short = 0, crossinline handler: (T) -> Unit): EventHook<T>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open override fun onDisabled()

Will be called when the state is toggled off.

Link copied to clipboard
open fun onEnabled()

Will be called when the state is toggled on.

Link copied to clipboard
Link copied to clipboard
open override fun onToggled(state: Boolean): Boolean

The listener that will be called when the state is toggled. By default, it will simply call onEnabled or onDisabled depending on the state.

fun onToggled(state: Boolean, isParentUpdate: Boolean): Boolean
Link copied to clipboard
override fun parent(): EventListener?
Link copied to clipboard
fun regex(name: String, default: Regex): Value<Regex>
Link copied to clipboard
Link copied to clipboard
fun removeBlock(pos: BlockPos, handlerId: Int = 0)

Removes a block from the rendering, it will get an out animation tho.

Link copied to clipboard

Remove cached scope and cancel it.

Link copied to clipboard
inline fun <T : Event> EventListener.repeated(times: Int = 1, priority: Short = 1, crossinline handler: (T) -> Unit): EventHook<T>
Link copied to clipboard
open override fun restore()

Restore all values to their default values

Link copied to clipboard
fun <C : SequencedSet<Identifier>> s2cPackets(name: String, default: C): RegistryListValue<C, Identifier>
Link copied to clipboard
inline fun <T : Event> EventListener.sequenceHandler(priority: Short = 0, dispatcher: CoroutineDispatcher? = null, onCancellation: Runnable? = null, crossinline eventHandler: SuspendableEventHandler<T>): EventHook<T>

Registers an event hook for events of type T and launches a sequence

Link copied to clipboard
Link copied to clipboard
open fun setByString(string: String)
Link copied to clipboard
@JvmName(name = "setValue")
fun setValue(t: Value): Result<Unit>
operator fun setValue(u: Any?, property: KProperty<*>, t: MutableCollection<Value<*>>)
Link copied to clipboard
fun <C : SequencedSet<SoundEvent>> sounds(name: String, default: C): RegistryListValue<C, SoundEvent>
Link copied to clipboard
inline fun <T : Event> EventListener.suspendHandler(context: CoroutineContext = EmptyCoroutineContext, priority: Short = 0, behavior: SuspendHandlerBehavior = SuspendHandlerBehavior.Parallel.Default, noinline handler: SuspendableEventHandler<T>): EventHook<T>

Start a Job on event.

Link copied to clipboard
fun text(name: String, default: String): Value<String>
Link copied to clipboard
Link copied to clipboard
inline fun EventListener.tickHandler(dispatcher: CoroutineDispatcher? = null, onCancellation: Runnable? = null, crossinline eventHandler: suspend CoroutineScope.() -> Unit): EventHook<GameTickEvent>

Registers a repeatable sequence which repeats the execution of code on GameTickEvent.

Link copied to clipboard
open override fun toString(): String
Link copied to clipboard
fun <T : ValueGroup> tree(valueGroup: T): T
Link copied to clipboard
fun <T : ValueGroup> treeAll(vararg valueGroups: T)
Link copied to clipboard
Link copied to clipboard

Unbinds the key by setting it to UNKNOWN_KEY.

Link copied to clipboard
open fun unregister()

Unregisters the event handler from the manager. This decision is FINAL! After the class was unregistered we cannot restore the handlers.

Link copied to clipboard
inline fun <T : Event> EventListener.until(priority: Short = 0, crossinline handler: (T) -> Boolean): EventHook<T>
Link copied to clipboard
fun updateAll(handlerId: Int = 0)

Updates all culling data.

Link copied to clipboard
fun updateBox(pos: BlockPos, box: AABB, handlerId: Int = 0)

Updates the box of pos to box.

Link copied to clipboard
fun <V : Value<*>> value(value: V): V
fun <T : Any> value(name: String, defaultValue: T, valueType: ValueType = ValueType.INVALID, aliases: List<String> = emptyList()): Value<T>
Link copied to clipboard
fun vec2f(name: String, default: Vector2fc): Value<Vector2fc>
Link copied to clipboard
fun vec3d(name: String, default: Vec3 = Vec3.ZERO, useLocateButton: Boolean = true, aliases: List<String> = emptyList()): Value<Vec3>
Link copied to clipboard
fun vec3i(name: String, default: Vec3i = Vec3i.ZERO, useLocateButton: Boolean = true, aliases: List<String> = emptyList()): Value<Vec3i>
Link copied to clipboard
inline suspend fun <T : Event> EventListener.waitMatches(priority: Short = 0, predicate: Predicate<T>): T

Wait an event of type T which matches given predicate.

suspend fun <T : Event> EventListener.waitMatches(eventClass: Class<T>, priority: Short, predicate: Predicate<T>): T
Link copied to clipboard
inline suspend fun <T : Event> EventListener.waitMatchesWithTimeout(timeout: Duration, priority: Short = 0, predicate: Predicate<T>): T?

Wait an event of type T which matches given predicate. If the timeout is exceeded, return null.

Link copied to clipboard
open fun walkInit()
Link copied to clipboard
fun walkKeyPath(previousBaseKey: String? = null)

Walks the path of the ValueGroup and its children

Link copied to clipboard

Wrap the original interceptor and make it auto-detect the listener's running state at suspension to determine whether to resume the continuation.