1
0
Fork 0

Even though I know it’s fine I’m never gonna be the same

This commit is contained in:
Akira Olivia Pink 2025-05-18 14:35:17 -03:00
parent ccec36df9b
commit 802df9a44f
37 changed files with 42006 additions and 1 deletions

View file

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

Before

Width:  |  Height:  |  Size: 679 B

After

Width:  |  Height:  |  Size: 679 B

View file

Before

Width:  |  Height:  |  Size: 639 B

After

Width:  |  Height:  |  Size: 639 B

View file

Before

Width:  |  Height:  |  Size: 748 B

After

Width:  |  Height:  |  Size: 748 B

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

Before

Width:  |  Height:  |  Size: 519 B

After

Width:  |  Height:  |  Size: 519 B

View file

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

View file

Before

Width:  |  Height:  |  Size: 308 B

After

Width:  |  Height:  |  Size: 308 B

View file

@ -0,0 +1,700 @@
-- V1.14 for 0.1.0 and above
-- Made by JimmyHelp
-- Contains Manuel's runLater
local anims = {}
local controller = {}
local controllerMT = {__index = controller}
local objects = {}
local exList = {
"idling",
"walking",
"walkingback",
"jumpingup",
"jumpingdown",
"falling",
"sprinting",
"sprintjumpup",
"sprintjumpdown",
"crouching",
"crouchwalk",
"crouchwalkback",
"crouchjumpup",
"crouchjumpdown",
"elytra",
"elytradown",
"trident",
"sleeping",
"swimming",
"sitting",
"sitmove",
"sitmoveback",
"sitjumpup",
"sitjumpdown",
"sitpass",
"crawling",
"crawlstill",
"flying",
"flywalk",
"flywalkback",
"flysprint",
"flyup",
"flydown",
"climbing",
"climbstill",
"climbdown",
"climbcrouch",
"climbcrouchwalking",
"water",
"waterwalk",
"waterwalkback",
"waterup",
"waterdown",
"watercrouch",
"watercrouchwalk",
"watercrouchwalkback",
"watercrouchup",
"watercrouchdown",
"hurt",
"death"
}
local incList = {
"attackR",
"attackL",
"mineR",
"mineL",
"holdR",
"holdL",
"eatR",
"eatL",
"drinkR",
"drinkL",
"blockR",
"blockL",
"bowR",
"bowL",
"loadR",
"loadL",
"crossR",
"crossL",
"spearR",
"spearL",
"spyglassR",
"spyglassL",
"hornR",
"hornL",
"brushR",
"brushL",
}
--[[local oldList = {} -- simply make the list again
for key, _ in pairs(aList) do
oldList[key] = {active = false}
end]]
local GSAnimBlend
for _, key in ipairs(listFiles(nil,true)) do
if key:find("GSAnimBlend$") then
GSAnimBlend = require(key)
break
end
end
if GSAnimBlend then GSAnimBlend.safe = false end
local function setBlendTime(ex,inc,o)
for _,list in pairs(o.aList) do
for _,value in pairs(list.list) do
value:setBlendTime(list.type == "excluAnims" and ex or inc)
end
end
end
---@param ex? number
---@param inc? number
function controller:setBlendTimes(ex,inc)
if not GSAnimBlend then error("GSAnimBlend was not found in the avatar, and this function is for interacting with GSAnimBlend.",2) end
if type(ex) ~= "number" and ex ~= nil then
error("The first arg is a non-number value ("..type(ex).."), must be a number or nil.",2)
end
if type(inc) ~= "number" and inc ~= nil then
error("The second arg is a non-number value ("..type(inc).."), must be a number or nil.",2)
end
if ex == nil then
ex = 0
end
if inc == nil then
inc = ex
end
setBlendTime(ex,inc,self)
return self
end
local flyinit
local function addAnims(bb,o)
local listy = o.aList
for _,anim in pairs(bb) do
for name,animation in pairs(anim) do
if name:find("fly") then flyinit = true end
for key, _ in pairs(o.aList) do
if name:find(key.."$") then
listy[key].list[#listy[key].list+1] = animation
break
end
end
end
end
if GSAnimBlend then setBlendTime(4,4,o) end
end
---@param anim table
---@param ifFly? boolean
function controller:setAnims(anim,ifFly)
flyinit = ifFly
for key, value in pairs(anim) do
self.aList[key].list = value
end
if GSAnimBlend then setBlendTime(4,4,self) end
return self
end
---- Run Later by manuel_2867 ----
local tmrs={}
local t=0
---Schedules a function to run after a certain amount of ticks
---@param ticks number|function Amount of ticks to wait, or a predicate function to check each tick until it returns true
---@param next function Function to run after amount of ticks, or after the predicate function returned true
local function wait(ticks,next)
local x=type(ticks)=="number"
table.insert(tmrs,{t=x and t+ticks,p=x and function()end or ticks,n=next})
end
function events.TICK()
t=t+1
for key,timer in pairs(tmrs) do
if timer.p()or(timer.t and t >= timer.t)then
timer.n()
tmrs[key]=nil
end
end
end
local fallVel = -0.6
---@param vel? number
function anims:setFallVel(vel)
if type(vel) ~= "number" and vel ~= nil then
error("Tried to set the velocity to a non-number value ("..type(vel)..").")
end
fallVel = vel or -0.6
return self
end
local oneJump = false
---@param state? boolean
function anims:setOneJump(state)
oneJump = state or false
return self
end
local auto = true
function anims:disableAutoSearch()
auto = false
return self
end
local function getPlay(anim)
local exists, hold = pcall(anim.isHolding,anim)
return anim:isPlaying() or (exists and hold)
end
local function getOverriders(type,o)
return o.overrideStates[type] or o.overrideStates.allAnims
end
local function addOverriders(self,type,...)
for _, value in pairs({...}) do
if #self.overriders[type] == 64 then
error("The max amount of overriding animations for "..type.." (64) was reached. Do not put the code for adding overriding animations in a function, it will infinitely add animations.",3)
end
self.overriders[type][#self.overriders[type]+1] = value
end
end
---@param state? boolean
function controller:setAllOff(state)
self.setOverrides.allAnims = state
return self
end
---@param state? boolean
function controller:setExcluOff(state)
self.setOverrides.excluAnims = state
return self
end
---@param state? boolean
function controller:setIncluOff(state)
self.setOverrides.incluAnims = state
return self
end
---@param ... Animation
function controller:addExcluOverrider(...)
addOverriders(self,"excluAnims",...)
return self
end
---@param ... Animation
function controller:addIncluOverrider(...)
addOverriders(self,"incluAnims",...)
return self
end
---@param ... Animation
function controller:addAllOverrider(...)
addOverriders(self,"allAnims",...)
return self
end
---@param exState? string
---@param inState? string
function controller:setState(exState,inState)
if type(exState) ~= "string" and exState ~= nil then
error("The first arg is a non-string value ("..type(exState).."), must be a string or nil.",2)
end
if type(inState) ~= "string" and inState ~= nil then
error("The second arg is a non-string value ("..type(inState).."), must be a string or nil.",2)
end
self.toggleState = {excluAnims = exState or "",incluAnims = inState or exState or ""}
return self
end
function controller:getState()
return self.toggleState
end
local function getStates(type,o)
return o.toggleState[type]
end
---@param spec? string
function controller:getAnimationStates(spec)
if type(spec) ~= "string" and spec ~= nil then
error("The animation state is a non-string value ("..type(spec).."), must be a string or nil.",2)
end
local states = {}
for k,v in pairs(self.aList) do
states[k] = v.active
end
if spec then return self.aList[spec].active else return states end
end
local function setAnimation(anim,override,state,o)
local saved = o.aList[anim]
local exists = true
for _,value in pairs(saved.list) do
if value:getName() == state..anim then
if not saved.active and saved.stop then break end
value:setPlaying(saved.active and not override)
if saved.active and saved.stop and not override then
value:stop():play()
end
exists = false
else
if not saved.active and saved.stop then break end
value:stop()
end
end
for _,value in pairs(saved.list) do
if exists and value:getName() == anim then
if not saved.active and saved.stop then break end
if saved.active and saved.stop and not override then
value:stop():play()
break
end
value:setPlaying(saved.active and not override)
end
end
end
local flying
function pings.EZAnims_cFly(x)
flying = x
end
local diff = false
local rightResult, leftResult, targetEntity, rightMine, leftMine, rightAttack, leftAttack, oldhitBlock, targetBlock, blockSuccess, blockResult, hitBlock
local yvel, grounded, oldgrounded, hasJumped, cFlying, oldcFlying
local cooldown = false
local updateTimer = 0
local toggleDiff
local function getInfo()
if host:isHost() then
if flyinit then
cFlying = host:isFlying()
if cFlying ~= oldcFlying then
pings.EZAnims_cFly(cFlying)
end
oldcFlying = cFlying
updateTimer = updateTimer + 1
if updateTimer % 200 == 0 then
pings.EZAnims_cFly(cFlying)
end
end
end
local pose = player:getPose()
local velocity = player:getVelocity()
local moving = velocity.xz:length() > 0.01
local sprinty = player:isSprinting()
local vehicle = player:getVehicle()
local sitting = vehicle ~= nil or pose == "SITTING" -- if you're reading this code and see this, "SITTING" isn't a vanilla pose, this is for mods
local passenger = vehicle and vehicle:getControllingPassenger() ~= player
local creativeFlying = (flying or false) and not sitting
local standing = pose == "STANDING"
local crouching = pose == "CROUCHING" and not creativeFlying
local gliding = pose == "FALL_FLYING"
local spin = pose == "SPIN_ATTACK"
local sleeping = pose == "SLEEPING"
local swimming = pose == "SWIMMING"
local inWater = player:isUnderwater() and not sitting
local inLiquid = player:isInWater() or player:isInLava()
local liquidSwim = swimming and inLiquid
local crawling = swimming and not inLiquid
-- hasJumped stuff
yvel = velocity.y
local hover = yvel < .01 and yvel > -.01
local goingUp = yvel > .01
local goingDown = yvel < -.01
local falling = yvel < fallVel
local playerGround = world.getBlockState(player:getPos():add(0,-.1,0))
local vehicleGround = sitting and world.getBlockState(vehicle:getPos():add(0,-.1,0))
oldgrounded = grounded
grounded = playerGround:isSolidBlock() or player:isOnGround() or (sitting and vehicleGround:isSolidBlock() or sitting and vehicle:isOnGround())
local pv = velocity:mul(1, 0, 1):normalize()
local pl = models:partToWorldMatrix():applyDir(0,0,-1):mul(1, 0, 1):normalize()
local fwd = pv:dot(pl)
local backwards = fwd < -.8
--local sideways = pv:cross(pl)
--local right = sideways.y > .6
--local left = sideways.y < -.6
-- canJump stuff
local webbed = world.getBlockState(player:getPos()).id == "minecraft:cobweb"
local ladder = player:isClimbing() and not grounded and not flying
local canJump = not (inLiquid or webbed or grounded)
local hp = player:getHealth() + player:getAbsorptionAmount()
if oldgrounded ~= grounded and not grounded and yvel > 0 then
cooldown = true
wait(10,function() cooldown = false end)
end
if (oldgrounded ~= grounded and not grounded and yvel > 0) and canJump then hasJumped = true end
if (grounded and (yvel <= 0 and yvel > -0.1)) or (gliding or inLiquid) then hasJumped = false end
local neverJump = not (gliding or spin or sleeping or swimming or ladder)
local jumpingUp = hasJumped and goingUp and neverJump
local jumpingDown = hasJumped and goingDown and not falling and neverJump or (cooldown and not jumpingUp)
local isJumping = jumpingUp or jumpingDown or falling
local sprinting = sprinty and standing and not inLiquid and not sitting
local walking = moving and not sprinting and not isJumping and not sitting
local forward = walking and not backwards
local backward = walking and backwards
local handedness = player:isLeftHanded()
local rightItem = player:getHeldItem(handedness)
local leftItem = player:getHeldItem(not handedness)
local rightActive = handedness and "OFF_HAND" or "MAIN_HAND"
local leftActive = not handedness and "OFF_HAND" or "MAIN_HAND"
local activeness = player:getActiveHand()
local using = player:isUsingItem()
local rightSuccess = pcall(rightItem.getUseAction,rightItem)
if rightSuccess then rightResult = rightItem:getUseAction() else rightResult = "NONE" end
local usingR = using and activeness == rightActive and rightResult
local leftSuccess = pcall(leftItem.getUseAction,leftItem)
if leftSuccess then leftResult = leftItem:getUseAction() else leftResult = "NONE" end
local usingL = using and activeness == leftActive and leftResult
local swing = player:getSwingTime()
local arm = swing == 1 and not sleeping and player:getSwingArm()
local rTag= rightItem.tag
local lTag = leftItem.tag
local crossR = rTag and (rTag["Charged"] == 1 or (rTag["ChargedProjectiles"] and next(rTag["ChargedProjectiles"])~= nil)) or false
local crossL = lTag and (lTag["Charged"] == 1 or (lTag["ChargedProjectiles"] and next(lTag["ChargedProjectiles"])~= nil)) or false
local exclude = not (crossR or crossL or using)
local game = player:getGamemode()
local reach = game and 6 or 3
if swing == 1 then
targetEntity = type(player:getTargetedEntity(reach)) == "PlayerAPI" or type(player:getTargetedEntity(reach)) == "LivingEntityAPI"
rightMine = oldhitBlock and not targetEntity
leftMine = oldhitBlock and not targetEntity
rightAttack = (not oldhitBlock or targetEntity)
leftAttack = (not oldhitBlock or targetEntity)
end
for _,o in pairs(objects) do
o.diff = false
for types, tabs in pairs(o.overriders) do
o.overrideStates[types] = o.setOverrides[types] or false
for _, value in pairs(tabs) do
if getPlay(value) then
o.overrideStates[types] = true
break
end
end
if o.oldoverStates[types] ~= o.overrideStates[types] then
o.diff = true
end
o.oldoverStates[types] = o.overrideStates[types]
end
local ob = o.aList
ob.flywalkback.active = creativeFlying and backward and (not (goingDown or goingUp))
ob.flysprint.active = creativeFlying and sprinting and not isJumping and (not (goingDown or goingUp))
ob.flyup.active = creativeFlying and goingUp
ob.flydown.active = creativeFlying and goingDown
ob.flywalk.active = creativeFlying and forward and (not (goingDown or goingUp)) and not sleeping or (ob.flysprint.active and next(ob.flysprint.list)==nil) or (ob.flywalkback.active and next(ob.flywalkback.list)==nil)
or (ob.flyup.active and next(ob.flyup.list)==nil) or (ob.flydown.active and next(ob.flydown.list)==nil)
ob.flying.active = creativeFlying and not sprinting and not moving and standing and not isJumping and (not (goingDown or goingUp)) and not sleeping or (ob.flywalk.active and next(ob.flywalk.list)==nil)
ob.watercrouchwalkback.active = inWater and crouching and backward and not goingDown
ob.watercrouchwalk.active = inWater and crouching and forward and not (goingDown or goingUp) or (ob.watercrouchwalkback.active and next(ob.watercrouchwalkback.list)==nil)
ob.watercrouchup.active = inWater and crouching and goingUp
ob.watercrouchdown.active = inWater and crouching and goingDown or (ob.watercrouchup.active and next(ob.watercrouchup.list)==nil)
ob.watercrouch.active = inWater and crouching and not moving and not (goingDown or goingUp) or (ob.watercrouchdown.active and next(ob.watercrouchdown.list)==nil) or (ob.watercrouchwalk.active and next(ob.watercrouchwalk.list)==nil)
ob.waterdown.active = inWater and goingDown and not falling and standing and not creativeFlying
ob.waterup.active = inWater and goingUp and standing and not creativeFlying
ob.waterwalkback.active = inWater and backward and hover and standing and not creativeFlying
ob.waterwalk.active = inWater and forward and hover and standing and not creativeFlying or (ob.waterwalkback.active and next(ob.waterwalkback.list)==nil) or (ob.waterdown.active and next(ob.waterdown.list)==nil)
or (ob.waterup.active and next(ob.waterup.list)==nil)
ob.water.active = inWater and not moving and standing and hover and not creativeFlying or (ob.waterwalk.active and next(ob.waterwalk.list)==nil)
ob.crawlstill.active = crawling and not moving
ob.crawling.active = crawling and moving or (ob.crawlstill.active and next(ob.crawlstill.list)==nil)
ob.swimming.active = liquidSwim or (ob.crawling.active and next(ob.crawling.list)==nil)
ob.elytradown.active = gliding and goingDown
ob.elytra.active = gliding and not goingDown or (ob.elytradown.active and next(ob.elytradown.list)==nil)
ob.sitpass.active = passenger and standing or false
ob.sitjumpdown.active = sitting and not passenger and standing and (jumpingDown or falling)
ob.sitjumpup.active = sitting and not passenger and jumpingUp and standing or (ob.sitjumpdown.active and next(ob.sitjumpdown.list)==nil)
ob.sitmoveback.active = sitting and not passenger and not isJumping and backwards and standing
ob.sitmove.active = velocity:length() > 0 and not passenger and not backwards and standing and sitting and not isJumping or (ob.sitmoveback.active and next(ob.sitmoveback.list)==nil) or (ob.sitjumpup.active and next(ob.sitjumpup.list)==nil)
ob.sitting.active = sitting and not passenger and velocity:length() == 0 and not isJumping and standing or (ob.sitmove.active and next(ob.sitmove.list)==nil) or (ob.sitpass.active and next(ob.sitpass.list)==nil) or false
ob.trident.active = spin
ob.sleeping.active = sleeping
ob.climbcrouchwalking.active = ladder and crouching and not inWater and (moving or yvel ~= 0)
ob.climbcrouch.active = ladder and crouching and hover and not moving or (ob.climbcrouchwalking.active and next(ob.climbcrouchwalking.list)==nil)
ob.climbdown.active = ladder and goingDown and not crouching
ob.climbstill.active = ladder and not crouching and hover
ob.climbing.active = ladder and goingUp and not crouching or (ob.climbdown.active and next(ob.climbdown.list)==nil) or (ob.climbstill.active and next(ob.climbstill.list)==nil)
ob.crouchjumpdown.active = crouching and jumpingDown and not inWater and not ladder
ob.crouchjumpup.active = crouching and jumpingUp and not inWater and not ladder or (not oneJump and (ob.crouchjumpdown.active and next(ob.crouchjumpdown.list)==nil))
ob.crouchwalkback.active = backward and crouching and not inWater and not ladder or (ob.watercrouchwalkback.active and next(ob.watercrouchwalkback.list)==nil and next(ob.watercrouchwalk.list)==nil and next(ob.watercrouch.list)==nil)
ob.crouchwalk.active = forward and crouching and not (jumpingDown or jumpingUp) and not inWater and not ladder or (ob.crouchwalkback.active and next(ob.crouchwalkback.list)==nil) or (not oneJump and (ob.crouchjumpup.active and next(ob.crouchjumpup.list)==nil)) or ((ob.watercrouchwalk.active and not ob.watercrouchwalkback.active) and next(ob.watercrouchwalk.list)==nil and next(ob.watercrouch.list)==nil)
ob.crouching.active = crouching and not walking and not inWater and not isJumping and not ladder and not cooldown or (ob.crouchwalk.active and next(ob.crouchwalk.list)==nil) or (ob.climbcrouch.active and next(ob.climbcrouch.list)==nil) or ((ob.watercrouch.active and not ob.watercrouchwalk.active) and next(ob.watercrouch.list)==nil)
ob.falling.active = falling and not gliding and not creativeFlying and not sitting
ob.sprintjumpdown.active = jumpingDown and sprinting and not creativeFlying and not ladder or false
ob.sprintjumpup.active = jumpingUp and sprinting and not creativeFlying and not ladder or (not oneJump and (ob.sprintjumpdown.active and next(ob.sprintjumpdown.list)==nil)) or false
ob.jumpingdown.active = jumpingDown and not ladder and not sprinting and not crouching and not sitting and not sleeping and not gliding and not creativeFlying and not spin and not inWater or (ob.falling.active and next(ob.falling.list)==nil) or (oneJump and (ob.sprintjumpdown.active and next(ob.sprintjumpdown.list)==nil)) or (oneJump and (ob.crouchjumpdown.active and next(ob.crouchjumpdown.list)==nil))
ob.jumpingup.active = jumpingUp and not ladder and not sprinting and not crouching and not sitting and not creativeFlying and not inWater or (ob.jumpingdown.active and next(ob.jumpingdown.list)==nil) or (ob.trident.active and next(ob.trident.list)==nil) or (oneJump and (ob.sprintjumpup.active and next(ob.sprintjumpup.list)==nil)) or (oneJump and (ob.crouchjumpup.active and next(ob.crouchjumpup.list)==nil))
ob.sprinting.active = sprinting and not isJumping and not creativeFlying and not ladder and not cooldown and not inWater or (not oneJump and (ob.sprintjumpup.active and next(ob.sprintjumpup.list)==nil)) or false
ob.walkingback.active = backward and standing and not creativeFlying and not ladder and not inWater or (ob.flywalkback.active and next(ob.flywalkback.list)==nil and next(ob.flywalk.list)==nil and next(ob.flying.list)==nil)
ob.walking.active = forward and standing and not creativeFlying and not ladder and not cooldown and not inWater or (ob.walkingback.active and next(ob.walkingback.list)==nil) or (ob.sprinting.active and next(ob.sprinting.list)==nil) or (ob.climbing.active and next(ob.climbing.list)==nil)
or (ob.swimming.active and next(ob.swimming.list)==nil) or (ob.elytra.active and next(ob.elytra.list)==nil) or (ob.jumpingup.active and next(ob.jumpingup.list)==nil) or (ob.waterwalk.active and (next(ob.waterwalk.list)==nil and next(ob.water.list)==nil)) or ((ob.flywalk.active and not ob.flywalkback.active) and next(ob.flywalk.list)==nil and next(ob.flying.list)==nil)
or (ob.crouchwalk.active and (next(ob.crouchwalk)==nil or next(ob.crouching.list)==nil))
ob.idling.active = not moving and not sprinting and standing and not isJumping and not sitting and not inWater and not creativeFlying and not ladder or (ob.sleeping.active and next(ob.sleeping.list)==nil) or (ob.sitting.active and next(ob.sitting.list)==nil)
or ((ob.water.active and not ob.waterwalk.active) and next(ob.water.list)==nil) or ((ob.flying.active and not ob.flywalk.active) and next(ob.flying.list)==nil) or ((ob.crouching.active and not ob.crouchwalk.active) and next(ob.crouching.list)==nil)
ob.death.active = hp <= 0
ob.hurt.active = player:getNbt().HurtTime > 0 and hp > 0
ob.attackR.active = arm == rightActive and rightAttack
ob.attackL.active = arm == leftActive and leftAttack
ob.mineR.active = arm == rightActive and rightMine
ob.mineL.active = arm == leftActive and leftMine
ob.holdR.active = rightItem.id~="minecraft:air" and exclude
ob.holdL.active = leftItem.id~="minecraft:air" and exclude
ob.eatR.active = usingR == "EAT"
ob.eatL.active = usingL == "EAT"
ob.drinkR.active = usingR == "DRINK"
ob.drinkL.active = usingL == "DRINK"
ob.blockR.active = usingR == "BLOCK"
ob.blockL.active = usingL == "BLOCK"
ob.bowR.active = usingR == "BOW"
ob.bowL.active = usingL == "BOW"
ob.loadR.active = usingR == "CROSSBOW"
ob.loadL.active = usingL == "CROSSBOW"
ob.crossR.active = crossR
ob.crossL.active = crossL
ob.spearR.active = usingR == "SPEAR"
ob.spearL.active = usingL == "SPEAR"
ob.spyglassR.active = usingR == "SPYGLASS"
ob.spyglassL.active = usingL == "SPYGLASS"
ob.hornR.active = usingR == "TOOT_HORN"
ob.hornL.active = usingL == "TOOT_HORN"
ob.brushR.active = usingR == "BRUSH"
ob.brushL.active = usingL == "BRUSH"
for key,value in pairs(o.aList) do
if (value.active ~= o.oldList[key].active) then
setAnimation(key,getOverriders(value.type,o),getStates(value.type,o),o)
end
if (o.toggleDiff or o.diff) and value.active then
setAnimation(key,getOverriders(value.type,o),getStates(value.type,o),o)
end
o.oldList[key].active = value.active
end
o.toggleDiff = false
for key,_ in pairs(o.toggleState) do
if o.oldToggle[key] ~= o.toggleState[key] then
o.toggleDiff = true
end
o.oldToggle[key] = o.toggleState[key]
end
end
oldhitBlock = hitBlock
targetBlock = player:getTargetedBlock(true, game and 5 or 4.5)
blockSuccess, blockResult = pcall(targetBlock.getTextures, targetBlock)
if blockSuccess then hitBlock = not (next(blockResult) == nil) else hitBlock = true end
end
function events.tick()
getInfo()
end
local function getBBModels()
local bbmodels = {}
for _,layer in pairs(models:getChildren()) do
local name = layer:getName()
if animations[name] then
bbmodels[name] = animations[name]
else
for _,layer2 in pairs(layer:getChildren()) do
local name2 = name.."."..layer2:getName()
bbmodels[name2] = animations[name2]
end
end
end
if next(bbmodels) == nil then
error("No blockbench models containing animations were found.")
end
local aList = {}
local oldList = {}
for _, value in pairs(exList) do
aList[value] = {active = false,list = {},type = "excluAnims"}
oldList[value] = {active = false}
end
for _, value in pairs(incList) do
aList[value] = {active = false,list = {},type = "incluAnims"}
oldList[value] = {active = false}
end
aList.attackR.stop = true
aList.attackL.stop = true
aList.mineR.stop = true
aList.mineL.stop = true
aList.hurt.stop = true
local o = setmetatable(
{
bbmodels=bbmodels,
aList=aList,
oldList=oldList,
toggleState = {excluAnims="",incluAnims=""},
oldToggle = {excluAnims="",incluAnims=""},
toggleDiff = toggleDiff,
overriders = {excluAnims = {},incluAnims = {}, allAnims = {}},
overrideStates = {excluAnims = false,incluAnims = false, allAnims = false},
oldoverStates = {excluAnims = false,incluAnims = false, allAnims = false},
setOverrides = {excluAnims = false,incluAnims = false, allAnims = false},
diff = diff
},
controllerMT)
objects[1] = o
addAnims(bbmodels,o)
end
function events.entity_init()
if #objects == 0 then getBBModels() end
end
local firstRun = true
---@param ... table
function anims:addBBModel(...)
local bbmodels = {...}
if next(bbmodels) == nil then
error("The blockbench model provided couldn't be found because it has no animations, or because of a typo or some other mistake.",2)
end
local aList = {}
local oldList = {}
for _, value in pairs(exList) do
aList[value] = {active = false,list = {},type = "excluAnims"}
oldList[value] = {active = false}
end
for _, value in pairs(incList) do
aList[value] = {active = false,list = {},type = "incluAnims"}
oldList[value] = {active = false}
end
aList.attackR.stop = true
aList.attackL.stop = true
aList.mineR.stop = true
aList.mineL.stop = true
aList.hurt.stop = true
local o = setmetatable(
{
bbmodels=bbmodels,
aList=aList,
oldList=oldList,
toggleState = {excluAnims="",incluAnims=""},
oldToggle = {excluAnims="",incluAnims=""},
toggleDiff = toggleDiff,
overriders = {excluAnims = {},incluAnims = {}, allAnims = {}},
overrideStates = {excluAnims = false,incluAnims = false, allAnims = false},
oldoverStates = {excluAnims = false,incluAnims = false, allAnims = false},
setOverrides = {excluAnims = false,incluAnims = false, allAnims = false},
diff = diff
},
controllerMT)
objects[#objects+1] = o
if #objects == 16 then
error("The max amount of blockbench models (16) was reached. Do not put the code for adding blockbench models in a function, it will infinitely add blockbench models.",3)
end
if auto then addAnims(bbmodels,o) end
return o
end
anims.controller = controller
return anims

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,58 @@
--EMOTES--
local mainPage = action_wheel:newPage()
action_wheel:setPage(mainPage)
function pings.Follow()
animations.akira_olivia_pink.followMe:play()
end
---
function pings.Wave()
animations.akira_olivia_pink.wave:play()
end
---
function pings.Clap()
animations.akira_olivia_pink.clap:play()
end
---
-- function pings.Gun(state)
-- animations.akira_olivia_pink.ready_gun:setPlaying(state)
-- end
---
function pings.Sitting(state)
animations.akira_olivia_pink.sit_emote:setPlaying(state)
end
---
--------------------------------------------------------------------
mainPage:newAction()
:title("Wave")
:item("minecraft:lantern")
:hoverColor(1,1,0)
:onLeftClick(pings.Wave)
mainPage:newAction()
:title("Follow Me")
:item("minecraft:compass")
:hoverColor(1,1,0)
:onLeftClick(pings.Follow)
mainPage:newAction()
:title("Clap")
:item("minecraft:rabbit_foot")
:hoverColor(1,1,0)
:onLeftClick(pings.Clap)
mainPage:newAction()
:title("Sit")
:item("minecraft:purpur_stairs")
:hoverColor(1,1,0)
:onToggle(pings.Sitting)
-- mainPage:newAction()
-- :title("Gun")
-- :item("minecraft:crossbow")
-- :hoverColor(1,1,0)
-- :onToggle(pings.Gun)

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,9 @@
{
"authors": [
"oatmealine",
"akirapink"
],
"name": "Akira Eiko Olivia Pink (v4)",
"description":"The Last Human on the Internet",
"color": "#ff73d3"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 B

View file

@ -0,0 +1,29 @@
require("GSAnimBlend")
local anims = require("EZAnims")
local example = anims:addBBModel(animations.akira_olivia_pink)
vanilla_model.PLAYER:setVisible(false)
vanilla_model.ARMOR:setVisible(false)
vanilla_model.HELD_ITEMS:setVisible(true)
vanilla_model.ELYTRA:setVisible(true)
vanilla_model.CAPE:setVisible(false)
BlendTime = 2
animations.akira_olivia_pink.sit_emote:setBlendTime(2)
-- nameplate.All:setText('[{"text":"akirapink","color":"#ff73d3"}]')
-- models.akira_olivia_pink.root.RightArm
-- :copy("RightArmCopy") -- Create a copy of the arm
-- :setParentType("models.akira_olivia_pink.root.Torso.RightArm") -- Set the parent type of the copy
-- :moveTo(models.akira_olivia_pink.root.Torso) -- Move it to some location in the model
--
--function events.RENDER(_, context)
-- local is_firstperson = context == "FIRST_PERSON"f
-- models.akira_olivia_pink.root.Torso.RightArm:setVisible(not is_firstperson)
-- models.akira_olivia_pink.root.Torso:setVisible(not is_firstperson)
-- models.akira_olivia_pink.root.Torso.backpack:setVisible(not is_firstperson)
-- models.akira_olivia_pink.root.Torso.RightArmCopy:setVisible(is_firstperson)
--end
--hide vanilla elytra model
vanilla_model.ELYTRA:setVisible(false)

View file

Before

Width:  |  Height:  |  Size: 953 KiB

After

Width:  |  Height:  |  Size: 953 KiB

View file

Before

Width:  |  Height:  |  Size: 750 KiB

After

Width:  |  Height:  |  Size: 750 KiB

View file

Before

Width:  |  Height:  |  Size: 427 KiB

After

Width:  |  Height:  |  Size: 427 KiB

View file

Before

Width:  |  Height:  |  Size: 552 KiB

After

Width:  |  Height:  |  Size: 552 KiB

View file

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 1 MiB

View file

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 MiB

After

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 KiB

View file

@ -237,7 +237,7 @@ sub{
<!-- It's worth it, I think : ) --> <!-- It's worth it, I think : ) -->
<!-- what else must be done? --> <!-- what else must be done? -->
<!-- do you want the styling to be moved away from here the "deviating" id is for nothing atm--> <!-- do you want the styling to be moved away from here the "deviating" id is for nothing atm-->
<!-- I don't know, I'm not sure. I was about to ask to- nevermind I changed my mind about the other thing. But yeah IDK if I-Oh...hmm.. --> <!-- I don't know, I'm not sure. I was about to ask to- nevermind I changed my mind about the other thing. But yeah IDK if I-Oh...hmm.. meow -->
<p style=" <p style="
/*this element ignores grid positioning, and shoves itself above the margin out of border-box bounds (to clarify what is going on here)*/ /*this element ignores grid positioning, and shoves itself above the margin out of border-box bounds (to clarify what is going on here)*/
position:absolute; position:absolute;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

After

Width:  |  Height:  |  Size: 286 KiB