Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
f48b989
Tag windows
bladekt Apr 13, 2024
99ea78f
Freecam vertical movement fixes
bladekt Apr 13, 2024
12745d6
ClickGui:
bladekt Apr 19, 2024
7a174ae
Raw CustomModuleWindow impl
bladekt Apr 19, 2024
ec4c3c0
Broken blur
bladekt Apr 21, 2024
f6f8068
Faster texture upload
emyfops Apr 21, 2024
d2d3792
Better gaussian blur
emyfops Apr 21, 2024
d7b2f18
Get rid of the mojang's rendering utilities
emyfops Apr 21, 2024
f990d67
Merge branch 'master' into feature/renderer
emyfops Apr 21, 2024
dd59c3f
Tag windows
bladekt Apr 13, 2024
8bb83c1
Freecam vertical movement fixes
bladekt Apr 13, 2024
dd2a14e
ClickGui:
bladekt Apr 19, 2024
3e4a9c8
Raw CustomModuleWindow impl
bladekt Apr 19, 2024
1aebc83
Broken blur
bladekt Apr 21, 2024
71dfaab
Faster texture upload
emyfops Apr 21, 2024
83e53e5
Better gaussian blur
emyfops Apr 21, 2024
3e4eaa1
Merge branch 'feature/renderer' of https://github.com/Avanatiker/NeoL…
emyfops Apr 21, 2024
77c4bf1
Fix: Single tag
emyfops Apr 21, 2024
fb77000
Make the blur stronger
emyfops Apr 21, 2024
975e1ec
Use our matrix
emyfops Apr 21, 2024
60e821f
Merge branch 'master' into feature/renderer
emyfops Apr 22, 2024
8d50d96
Make GuiConfig loadable
emyfops Apr 22, 2024
fd4100a
Fix: Wrong loadable
emyfops Apr 22, 2024
b07fe53
Fix: Tags
emyfops Apr 23, 2024
7a58391
Blur Optimization & Refactor
bladekt Apr 24, 2024
b50967a
Merge remote-tracking branch 'origin/feature/renderer' into feature/r…
bladekt Apr 24, 2024
2a92af9
Removed useless coerce
emyfops Apr 27, 2024
5edcf06
didn't meant to remove this
emyfops Apr 27, 2024
da76b29
Merge branch 'master' into feature/renderer
emyfops Apr 27, 2024
2f8d91d
Fix: VAO buffer leak
emyfops Apr 27, 2024
6fcc348
DirectionMask
bladekt Apr 28, 2024
de70f73
Optimization tweak
bladekt Apr 29, 2024
0e807d4
Quick refactor
bladekt Apr 29, 2024
4e8599f
Fix: Texture upload doesn't work on other architectures
emyfops Apr 30, 2024
4492ba7
Merge remote-tracking branch 'origin/feature/renderer' into feature/r…
bladekt Apr 30, 2024
2f6bf5c
Fix double destroying
Avanatiker Apr 30, 2024
84ddc4e
Dynamic, Static BlockESPs and Tracers
bladekt Apr 30, 2024
0cfaed1
Merge remote-tracking branch 'origin/feature/renderer' into feature/r…
bladekt Apr 30, 2024
f53baca
Refucktor
bladekt May 1, 2024
1ff8730
Added position iterator
emyfops May 1, 2024
6b01d57
Revert "Added position iterator"
emyfops May 1, 2024
4e66aae
Merge remote-tracking branch 'origin/feature/renderer' into feature/r…
bladekt May 2, 2024
13e1ca2
Scissor fix
bladekt May 2, 2024
67b2d99
Children system rework
bladekt May 2, 2024
81b4bde
oopsie
bladekt May 2, 2024
49eb6d4
Window creation tests
bladekt May 2, 2024
498b5af
Button action refactor
bladekt May 2, 2024
e2e434f
Single settings window
bladekt May 2, 2024
363bb61
Pool spam fix
bladekt May 2, 2024
9e4ae2c
Settings open animation & refactor
bladekt May 2, 2024
63021f7
Misc stuff
bladekt May 2, 2024
ab4107a
Added boolean button
bladekt May 3, 2024
6170a30
Outline renderer & many misc stuff
bladekt May 3, 2024
9ade9f7
Child logic rework(again), dropdown buttons
bladekt May 5, 2024
9babf6f
Setting animations rework
bladekt May 9, 2024
83ce0a6
Sexy animations & many fixes
bladekt May 9, 2024
6a8b2bc
Slider progress rendering
bladekt May 9, 2024
991d9a1
Rect sharpness & misc
bladekt May 9, 2024
ef6567f
Merge branch 'master' into feature/renderer
Avanatiker May 9, 2024
bd35875
Added SoundManager
Avanatiker May 9, 2024
3db39f0
Fixed sound manager
Avanatiker May 9, 2024
b3829c2
Font artifacts fix
bladekt May 9, 2024
168e705
Added alpha check
bladekt May 9, 2024
d249ba3
Removed useless setting
bladekt May 9, 2024
3128295
Setting space shadow
bladekt May 9, 2024
4b1e263
Gui sounds
bladekt May 10, 2024
cb519a2
Color banding dithering
bladekt May 10, 2024
3d0a549
Crash fix
bladekt May 11, 2024
cc38ff9
InputBar
bladekt May 11, 2024
d876309
String setting
bladekt May 12, 2024
179a54e
Enum setting & misc
bladekt May 12, 2024
b9bfa68
Fix: Empty click gui at first launch
bladekt May 12, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import com.lambda.event.EventFlow;
import com.lambda.event.events.RenderEvent;
import com.lambda.graphics.RenderMain;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.util.math.MatrixStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
Expand All @@ -16,4 +18,9 @@ private void updateTargetedEntityInvoke(float tickDelta, CallbackInfo info) {
info.cancel();
}
}

@Inject(method = "renderWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;render(Lnet/minecraft/client/util/math/MatrixStack;FJZLnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/GameRenderer;Lnet/minecraft/client/render/LightmapTextureManager;Lorg/joml/Matrix4f;)V", shift = At.Shift.AFTER))
private void onRenderWorld(float tickDelta, long limitTime, MatrixStack matrix, CallbackInfo ci) {
RenderMain.render3D(matrix.peek().getPositionMatrix());
}
}
5 changes: 4 additions & 1 deletion common/src/main/kotlin/com/lambda/Lambda.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ package com.lambda
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.lambda.config.serializer.*
import com.lambda.config.serializer.gui.CustomModuleWindowSerializer
import com.lambda.config.serializer.gui.ModuleTagSerializer
import com.lambda.config.serializer.gui.TagWindowSerializer
import com.lambda.core.Loader
import com.lambda.gui.impl.clickgui.windows.TagWindow
import com.lambda.gui.impl.clickgui.windows.tag.CustomModuleWindow
import com.lambda.gui.impl.clickgui.windows.tag.TagWindow
import com.lambda.module.tag.ModuleTag
import com.lambda.util.KeyCode
import com.mojang.authlib.GameProfile
Expand All @@ -28,6 +30,7 @@ object Lambda {
val gson: Gson = GsonBuilder()
.setPrettyPrinting()
.registerTypeAdapter(ModuleTag::class.java, ModuleTagSerializer)
.registerTypeAdapter(CustomModuleWindow::class.java, CustomModuleWindowSerializer)
.registerTypeAdapter(TagWindow::class.java, TagWindowSerializer)
.registerTypeAdapter(KeyCode::class.java, KeyCodeSerializer)
.registerTypeAdapter(Color::class.java, ColorSerializer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ import com.lambda.util.FolderRegister
object GuiConfig : Configuration() {
override val configName = "gui"
override val primary = FolderRegister.config.resolve("$configName.json")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package com.lambda.config.serializer.gui

import com.google.gson.*
import com.lambda.gui.impl.clickgui.LambdaClickGui
import com.lambda.gui.impl.clickgui.windows.tag.CustomModuleWindow
import com.lambda.module.ModuleRegistry
import com.lambda.util.math.Vec2d
import java.lang.reflect.Type

object CustomModuleWindowSerializer : JsonSerializer<CustomModuleWindow>, JsonDeserializer<CustomModuleWindow> {
override fun serialize(
src: CustomModuleWindow?,
typeOfSrc: Type?,
context: JsonSerializationContext?,
): JsonElement = src?.let {
JsonObject().apply {
addProperty("title", it.title)
add("modules", JsonArray().apply {
it.modules.forEach {
add(it.name)
}
})
addProperty("width", it.width)
addProperty("height", it.height)
addProperty("isOpen", it.isOpen)
add("position", JsonArray().apply {
add(it.position.x)
add(it.position.y)
})
}
} ?: JsonNull.INSTANCE

override fun deserialize(
json: JsonElement?,
typeOfT: Type?,
context: JsonDeserializationContext?,
) = json?.asJsonObject?.let {
CustomModuleWindow(
it["title"].asString,
it["modules"].asJsonArray.mapNotNull { name ->
ModuleRegistry.modules.firstOrNull { module ->
module.name == name.asString
}
} as MutableList,
LambdaClickGui
).apply {
width = it["width"].asDouble
height = it["height"].asDouble
isOpen = it["isOpen"].asBoolean
position = Vec2d(
it["position"].asJsonArray[0].asDouble,
it["position"].asJsonArray[1].asDouble
)
}
} ?: throw JsonParseException("Invalid window data")
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.lambda.config.serializer.gui

import com.google.gson.*
import com.lambda.gui.impl.clickgui.windows.TagWindow
import com.lambda.gui.impl.clickgui.LambdaClickGui
import com.lambda.gui.impl.clickgui.windows.tag.TagWindow
import com.lambda.module.tag.ModuleTag
import com.lambda.util.math.Vec2d
import java.lang.reflect.Type
Expand All @@ -13,12 +14,7 @@ object TagWindowSerializer : JsonSerializer<TagWindow>, JsonDeserializer<TagWind
context: JsonSerializationContext?,
): JsonElement = src?.let {
JsonObject().apply {
addProperty("title", it.title)
add("tags", JsonArray().apply {
it.tags.forEach { tag ->
add(tag.name)
}
})
addProperty("tag", it.tag.name)
addProperty("width", it.width)
addProperty("height", it.height)
addProperty("isOpen", it.isOpen)
Expand All @@ -33,15 +29,10 @@ object TagWindowSerializer : JsonSerializer<TagWindow>, JsonDeserializer<TagWind
json: JsonElement?,
typeOfT: Type?,
context: JsonDeserializationContext?,
) = json?.asJsonObject?.let {
TagWindow(
tags = it["tags"].asJsonArray.map { tag ->
ModuleTag(tag.asString)
}.toSet(),
title = it["title"].asString,
width = it["width"].asDouble,
) = json?.asJsonObject?.let {
TagWindow(ModuleTag(it["tag"].asString), LambdaClickGui).apply {
width = it["width"].asDouble
height = it["height"].asDouble
).apply {
isOpen = it["isOpen"].asBoolean
position = Vec2d(
it["position"].asJsonArray[0].asDouble,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@ abstract class NumericSetting<T>(
override fun toString() = "$value$unit"

override operator fun setValue(thisRef: Any?, property: KProperty<*>, valueIn: T) {
value = valueIn.coerceIn(range).roundToStep(step)
value = valueIn.coerceIn(range)
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.lambda.config.settings.comparable

import com.lambda.config.AbstractSetting
import com.lambda.util.Nameable
import java.util.*

class EnumSetting<T : Enum<T>>(
override val name: String,
Expand All @@ -12,7 +14,13 @@ class EnumSetting<T : Enum<T>>(
description,
visibility,
) {
private val enumValues: Array<T> = defaultValue.declaringJavaClass.enumConstants
val displayValue get() = (value as? Nameable)?.name ?: value.name.split('_').joinToString(" ") { low ->
low.lowercase().replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString()
}
}

val enumValues: Array<T> = defaultValue.declaringJavaClass.enumConstants

fun next() {
value = enumValues[((value.ordinal + 1) % enumValues.size)]
Expand Down
20 changes: 20 additions & 0 deletions common/src/main/kotlin/com/lambda/core/LambdaSound.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.lambda.core

import com.lambda.core.SoundManager.toIdentifier
import net.minecraft.sound.SoundEvent
import net.minecraft.util.Identifier

enum class LambdaSound(val id: Identifier) {
BUTTON_CLICK("button_click".toIdentifier()),

BOOLEAN_SETTING_ON("bool_on".toIdentifier()),
BOOLEAN_SETTING_OFF("bool_off".toIdentifier()),

MODULE_ON("module_on".toIdentifier()),
MODULE_OFF("module_off".toIdentifier()),

SETTINGS_OPEN("settings_open".toIdentifier()),
SETTINGS_CLOSE("settings_close".toIdentifier());

val event: SoundEvent = SoundEvent.of(id)
}
8 changes: 3 additions & 5 deletions common/src/main/kotlin/com/lambda/core/Loader.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@ import com.lambda.command.CommandManager
import com.lambda.config.configurations.GuiConfig
import com.lambda.friend.FriendManager
import com.lambda.graphics.renderer.gui.font.LambdaFont
import com.lambda.gui.impl.clickgui.GuiConfigurable
import com.lambda.gui.impl.clickgui.LambdaClickGui
import com.lambda.gui.GuiConfigurable
import com.lambda.interaction.PlayerPacketManager
import com.lambda.interaction.RotationManager
import com.lambda.module.ModuleRegistry
import com.lambda.util.Communication.ascii
import com.mojang.authlib.GameProfile
import java.util.*
import kotlin.system.measureTimeMillis

object Loader {
Expand All @@ -25,6 +22,7 @@ object Loader {
LambdaFont.Loader,
GuiConfigurable,
FriendManager,
SoundManager,
)

fun initialize() {
Expand All @@ -33,7 +31,7 @@ object Loader {

val initTime = measureTimeMillis {
loadables.forEach { loadable ->
var info: String
val info: String
val phaseTime = measureTimeMillis {
info = loadable.load()
}
Expand Down
37 changes: 37 additions & 0 deletions common/src/main/kotlin/com/lambda/core/SoundManager.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.lambda.core

import com.lambda.Lambda
import com.lambda.Lambda.mc
import com.lambda.util.math.random
import net.minecraft.client.sound.PositionedSoundInstance
import net.minecraft.registry.Registries
import net.minecraft.registry.Registry
import net.minecraft.sound.SoundEvent
import net.minecraft.util.Identifier

object SoundManager : Loadable {

override fun load(): String {
LambdaSound.entries.forEach {
Registry.register(Registries.SOUND_EVENT, it.id, it.event)
}

return "Loaded ${LambdaSound.entries.size} sounds"
}

fun playSound(event: SoundEvent, pitch: Double = 1.0) {
mc.soundManager.play(
PositionedSoundInstance.master(event, pitch.toFloat())
)
}

fun playSoundRandomly(event: SoundEvent, pitch: Double = 1.0, pitchRange: Double = 0.05) {
val actualPitch = (pitch - pitchRange..pitch + pitchRange).random()

mc.soundManager.play(
PositionedSoundInstance.master(event, actualPitch.toFloat())
)
}

fun String.toIdentifier() = Identifier(Lambda.MOD_ID, this)
}
4 changes: 2 additions & 2 deletions common/src/main/kotlin/com/lambda/event/events/RenderEvent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import com.lambda.util.math.Vec2d
abstract class RenderEvent : Event {
class World : RenderEvent()

abstract class GUI(val scaleFactor: Double) : RenderEvent() {
abstract class GUI(val scale: Double) : RenderEvent() {
class Scaled(scaleFactor: Double) : GUI(scaleFactor)
class Fixed : GUI(1.0)

val screenSize = Vec2d(mc.window.framebufferWidth, mc.window.framebufferHeight) / scaleFactor
val screenSize = Vec2d(mc.window.framebufferWidth, mc.window.framebufferHeight) / scale
}
class UpdateTarget : RenderEvent(), ICancellable by Cancellable()
}
19 changes: 17 additions & 2 deletions common/src/main/kotlin/com/lambda/graphics/RenderMain.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,15 @@ import com.lambda.graphics.gl.Matrices
import com.lambda.graphics.gl.Matrices.resetMatrix
import com.lambda.graphics.gl.Matrices.translate
import com.lambda.module.modules.client.GuiSettings
import com.lambda.util.math.Vec2d
import com.mojang.blaze3d.systems.RenderSystem.getProjectionMatrix
import org.joml.Matrix4f

object RenderMain {
val projectionMatrix = Matrix4f()
val modelViewMatrix: Matrix4f get() = Matrices.stack.peek().positionMatrix
val modelViewMatrix: Matrix4f get() = Matrices.peek()

var screenSize = Vec2d.ZERO

@JvmStatic
fun render2D() {
Expand All @@ -28,13 +32,24 @@ object RenderMain {
}
}

@JvmStatic
fun render3D(matrix: Matrix4f) {
resetMatrix(matrix)
projectionMatrix.set(getProjectionMatrix())

setupGL {
RenderEvent.World().post()
}
}

private fun rescale(factor: Double) {
val width = mc.window.framebufferWidth.toFloat()
val height = mc.window.framebufferHeight.toFloat()

val scaledWidth = width / factor
val scaledHeight = height / factor

screenSize = Vec2d(scaledWidth, scaledHeight)
projectionMatrix.setOrtho(0f, scaledWidth.toFloat(), scaledHeight.toFloat(), 0f, 1000f, 21000f)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ class Animation(initialValue: Double, val update: (Double) -> Double) {
fun AnimationTicker.exp(min: Double, max: Double, speed: Double, flag: () -> Boolean) =
exp({ min }, { max }, { speed }, flag)

fun AnimationTicker.exp(target: () -> Double, speed: Double) =
exp(target, target, { speed }, { true })

@Suppress("NAME_SHADOWING")
fun AnimationTicker.exp(min: () -> Double, max: () -> Double, speed: () -> Double, flag: () -> Boolean) =
Animation(min()) {
Expand All @@ -43,8 +46,8 @@ class Animation(initialValue: Double, val update: (Double) -> Double) {
else lerp(it, target, speed())
}.apply(::register)

// Exponent animation will never reach target value
private const val CLAMP = 0.001
// Exponent animation never reaches target value
private const val CLAMP = 0.01
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import java.awt.Color
interface IRenderContext {
fun vec3(x: Double, y: Double, z: Double): IRenderContext
fun vec2(x: Double, y: Double): IRenderContext
fun float(v: Double): IRenderContext
fun color(color: Color): IRenderContext
fun end(): Int

Expand Down
Loading