#Fix flickering
1 messages · Page 1 of 1 (latest)
Wdym by 0.5
set metadata value "last_mine_tick" of player to now
cancel event
set {_type} to type of target block
loop {blocks::*}:
if {_type} is {blocks::%loop-value%::mat}:
set {_id} to loop-value
stop loop
if {_id} is set:
cancel event
make player see target block as dirt
set metadata value "last_mine_tick" of player to now
if metadata value "mining_loop_active" of player is not set:
set metadata value "mining_loop_active" of player to true
set metadata value "mining_loc" of player to location of target block
set metadata value "mining_id" of player to {_id}
set {_tick_counter} to 0
set {_block} to target block
set {_loc} to location of target block
set {block::%player's uuid%} to target block
if {blockhp::%{_loc}%} is not set:
set {blockhp::%{_loc}%} to {blocks::%{_id}%::maxhp}
while target block of player is {_block}:
set {_diff} to difference between (metadata value "last_mine_tick" of player) and now
if {_diff} > 0.25 seconds:
delete metadata value "mining_loop_active" of player
delete metadata value "mining_loc" of player
delete metadata value "mining_id" of player
stop loop
if {_tick_counter} >= 5:
mineBlock(player, block at {_loc}, {_id})
set {_tick_counter} to 0
syncBlockCracks(player, block at {_loc}, {_id})
make player see damage of block at {_loc} as {stage::%player's uuid%} by player
wait 1 tick
add 1 to {_tick_counter}```
delete metadata value "mining_loop_active" of player
delete metadata value "mining_loc" of player
delete metadata value "mining_id" of player
stop loop
delete metadata value "mining_loop_active" of player
delete metadata value "mining_loc" of player
delete metadata value "mining_id" of player
function syncBlockCracks(p: player, loc: location, id: text):
set {_max} to {blocks::%{_id}%::maxhp}
if {blockhp::%{_loc}%} is not set:
set {blockhp::%{_loc}%} to {_max}
set {_current} to {blockhp::%{_loc}%}
if {_current} < 0:
set {_current} to 0
if {_current} > {_max}:
set {_current} to {_max}
set {_stage} to floor((({_max} - {_current}) / {_max}) * 90) / 100
set {stage::%{_p}'s uuid%} to {_stage}
@fair wasp