Arraylist

var module = rise.registerModule("Arraylist", "A arraylist made in Rise's script api!")

var modules = []
var font = render.getMinecraftFontRenderer()
var speed = 0.05;
var padding = 2;

script.handle("onUnload", function () {
	module.unregister()
})

module.handle("onEnable", function(e) {
	var unprocessedModules = rise.getModules()

	modules = []

	for (var index = 0; index < unprocessedModules.length; index++) {
		modules[index] = [unprocessedModules[index], rise.newVec2(0, 0), font.width(unprocessedModules[index].getName())]
	}

	modules.sort(
		function(a, b){
			return font.width(b[0].getName()) - font.width(a[0].getName())
		}
	)
})

module.handle("onRender2D", function(e) {
	var targetPosition = rise.newVec2(10, 10)

	for (var index = 0; index < modules.length; index++) {
		var module = modules[index]

		if (module[0].isEnabled()) {
			module[1].setX(lerp(module[1].getX(), targetPosition.getX(), speed))
			module[1].setY(lerp(module[1].getY(), targetPosition.getY(), speed))
		} else {
			if (module[1].getX() + module[2] < 0) {
				module[1].setY(targetPosition.getY())
				continue
			}
			module[1].setX(lerp(module[1].getX(), -module[2] - 1, speed))
		}

		var height = font.height() + padding * 2;

		if (module[0].isEnabled()) targetPosition.setY(targetPosition.getY() + height)

		render.rectangle(module[1].getX() - padding, module[1].getY() - 1 - padding, module[2] + (padding * 2), height, [0, 0, 0, 100])
		font.drawWithShadow(module[0].getName(), module[1].getX() + padding / 2, module[1].getY() + padding / 2, [255, 255, 255, 255])
	}

	return e
})

function lerp(a, b, c) {
	return a + c * (b - a);
}

Last updated