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.nameplate")
|
||||||
require("scripts.soggy")
|
require("scripts.soggy")
|
||||||
require("scripts.physics")
|
require("scripts.physics")
|
||||||
|
require("scripts.wheels.main")
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -6,15 +6,10 @@ local g = require("scripts.libs.gradient")
|
||||||
|
|
||||||
---@param name string
|
---@param name string
|
||||||
---@param gradient Gradient
|
---@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 count number number of gradients to be present in the span
|
||||||
---@param phase_shift_rate number how fast to shift the gradient
|
---@param phase_shift number shift of the gradient
|
||||||
---@returns fun():void # function to unregister
|
---@returns string
|
||||||
local function animate_gradient_name(name, gradient, nameplates, count, phase_shift_rate)
|
local function render_gradient_name(name, gradient, count, phase_shift)
|
||||||
if type(nameplates) ~= "table" then
|
|
||||||
nameplates = {nameplates}
|
|
||||||
end
|
|
||||||
|
|
||||||
local string_width = client.getTextWidth(name) / count;
|
local string_width = client.getTextWidth(name) / count;
|
||||||
local string_width_chars = {};
|
local string_width_chars = {};
|
||||||
for i = 1, #name do
|
for i = 1, #name do
|
||||||
|
@ -24,12 +19,6 @@ local function animate_gradient_name(name, gradient, nameplates, count, phase_sh
|
||||||
---@type ColoredText[]
|
---@type ColoredText[]
|
||||||
local result = {}
|
local result = {}
|
||||||
|
|
||||||
local phase_shift = 0;
|
|
||||||
local function render()
|
|
||||||
if client.isPaused() then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local acc = 0;
|
local acc = 0;
|
||||||
for i = 1, #name do
|
for i = 1, #name do
|
||||||
local offset = acc + string_width_chars[i];
|
local offset = acc + string_width_chars[i];
|
||||||
|
@ -42,11 +31,31 @@ local function animate_gradient_name(name, gradient, nameplates, count, phase_sh
|
||||||
}
|
}
|
||||||
end
|
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
|
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
|
for _, nameplate in pairs(nameplates) do
|
||||||
nameplate:setText(json)
|
nameplate:setText(result)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -66,30 +75,9 @@ local function static_gradient_name(name, gradient, nameplates, count, phase_shi
|
||||||
nameplates = {nameplates}
|
nameplates = {nameplates}
|
||||||
end
|
end
|
||||||
|
|
||||||
local string_width = client.getTextWidth(name) / count;
|
local result = render_gradient_name(name, gradient, count, phase_shift);
|
||||||
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);
|
|
||||||
for _, nameplate in pairs(nameplates) do
|
for _, nameplate in pairs(nameplates) do
|
||||||
nameplate:setText(json)
|
nameplate:setText(result)
|
||||||
end
|
end
|
||||||
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