Compare commits
2 commits
73735995b7
...
5406acc987
Author | SHA1 | Date | |
---|---|---|---|
5406acc987 | |||
d9297245a7 |
4 changed files with 81 additions and 60 deletions
|
@ -3,4 +3,5 @@ events.ENTITY_INIT:register(function ()
|
|||
require("scripts.nameplate")
|
||||
require("scripts.soggy")
|
||||
require("scripts.physics")
|
||||
require("scripts.wheels.main")
|
||||
end)
|
||||
|
|
|
@ -6,15 +6,10 @@ local g = require("scripts.libs.gradient")
|
|||
|
||||
---@param name string
|
||||
---@param gradient Gradient
|
||||
---@param nameplates Nameplate | Nameplate[] where to use the animated name
|
||||
---@param count number number of gradients to be present in the span
|
||||
---@param phase_shift_rate number how fast to shift the gradient
|
||||
---@returns fun():void # function to unregister
|
||||
local function animate_gradient_name(name, gradient, nameplates, count, phase_shift_rate)
|
||||
if type(nameplates) ~= "table" then
|
||||
nameplates = {nameplates}
|
||||
end
|
||||
|
||||
---@param phase_shift number shift of the gradient
|
||||
---@returns string
|
||||
local function render_gradient_name(name, gradient, count, phase_shift)
|
||||
local string_width = client.getTextWidth(name) / count;
|
||||
local string_width_chars = {};
|
||||
for i = 1, #name do
|
||||
|
@ -24,12 +19,6 @@ local function animate_gradient_name(name, gradient, nameplates, count, phase_sh
|
|||
---@type ColoredText[]
|
||||
local result = {}
|
||||
|
||||
local phase_shift = 0;
|
||||
local function render()
|
||||
if client.isPaused() then
|
||||
return
|
||||
end
|
||||
|
||||
local acc = 0;
|
||||
for i = 1, #name do
|
||||
local offset = acc + string_width_chars[i];
|
||||
|
@ -42,11 +31,31 @@ local function animate_gradient_name(name, gradient, nameplates, count, phase_sh
|
|||
}
|
||||
end
|
||||
|
||||
return toJson(result)
|
||||
end
|
||||
|
||||
---@param name string
|
||||
---@param gradient Gradient
|
||||
---@param nameplates Nameplate | Nameplate[] where to use the animated name
|
||||
---@param count number number of gradients to be present in the span
|
||||
---@param phase_shift_rate number how fast to shift the gradient
|
||||
---@returns fun():void # function to unregister
|
||||
local function animate_gradient_name(name, gradient, nameplates, count, phase_shift_rate)
|
||||
if type(nameplates) ~= "table" then
|
||||
nameplates = {nameplates}
|
||||
end
|
||||
|
||||
local phase_shift = 0;
|
||||
local function render()
|
||||
if client.isPaused() then
|
||||
return
|
||||
end
|
||||
|
||||
phase_shift = phase_shift + phase_shift_rate
|
||||
|
||||
local json = toJson(result);
|
||||
local result = render_gradient_name(name, gradient, count, phase_shift)
|
||||
for _, nameplate in pairs(nameplates) do
|
||||
nameplate:setText(json)
|
||||
nameplate:setText(result)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -66,30 +75,9 @@ local function static_gradient_name(name, gradient, nameplates, count, phase_shi
|
|||
nameplates = {nameplates}
|
||||
end
|
||||
|
||||
local string_width = client.getTextWidth(name) / count;
|
||||
local string_width_chars = {};
|
||||
for i = 1, #name do
|
||||
string_width_chars[i] = client.getTextWidth(name:sub(i, i))
|
||||
end
|
||||
|
||||
---@type ColoredText[]
|
||||
local result = {}
|
||||
|
||||
local acc = 0;
|
||||
for i = 1, #name do
|
||||
local offset = acc + string_width_chars[i];
|
||||
local color = gradient:at((offset / string_width) + phase_shift);
|
||||
acc = offset
|
||||
|
||||
result[i] = {
|
||||
text = name:sub(i, i),
|
||||
color = color:toHex(true, false)
|
||||
}
|
||||
end
|
||||
|
||||
local json = toJson(result);
|
||||
local result = render_gradient_name(name, gradient, count, phase_shift);
|
||||
for _, nameplate in pairs(nameplates) do
|
||||
nameplate:setText(json)
|
||||
nameplate:setText(result)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
18
scripts/wheels/main.lua
Normal file
18
scripts/wheels/main.lua
Normal file
|
@ -0,0 +1,18 @@
|
|||
local toggles = require("scripts.wheels.toggles")
|
||||
|
||||
local wheels = {
|
||||
toggles
|
||||
}
|
||||
|
||||
for i, v in pairs(wheels) do
|
||||
if i == 1 then action_wheel:setPage(v) end
|
||||
if #wheels ~= 1 then
|
||||
v:newAction()
|
||||
:title("to next page")
|
||||
:item("minecraft:arrow")
|
||||
:onLeftClick(function ()
|
||||
local index = (i + 1) > #wheels and 1 or (i + 1)
|
||||
action_wheel:setPage(wheels[index])
|
||||
end)
|
||||
end
|
||||
end
|
14
scripts/wheels/toggles.lua
Normal file
14
scripts/wheels/toggles.lua
Normal file
|
@ -0,0 +1,14 @@
|
|||
local toggles = action_wheel:newPage()
|
||||
|
||||
function pings.toggleArmor(state)
|
||||
vanilla_model.ARMOR:setVisible(state)
|
||||
end
|
||||
|
||||
local toggle_armor = toggles:newAction()
|
||||
:setToggled(false)
|
||||
:setOnToggle(pings.toggleArmor)
|
||||
:title("toggle armor")
|
||||
:item("red_wool")
|
||||
:toggleItem("green_wool")
|
||||
|
||||
return toggles
|
Loading…
Add table
Add a link
Reference in a new issue