Skip to content

Commit

Permalink
feat: cables now connect to servos #26
Browse files Browse the repository at this point in the history
  • Loading branch information
edayot committed Jul 6, 2024
1 parent aa1ae9c commit 559fe31
Show file tree
Hide file tree
Showing 8 changed files with 150 additions and 16 deletions.
9 changes: 5 additions & 4 deletions data/itemio/functions/impl/cable/init.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ execute align xyz positioned ~1.5 ~.5 ~.5 as @e[type=#itemio:cables,tag=itemio.c
execute if score #success_connected itemio.math matches 0 run function itemio:impl/cable/init/gen_new_id


#handeling custom model data
scoreboard players set @s itemio.math 0
scoreboard players operation @s itemio.math = #model_final itemio.math
function #itemio:event/cable_update



#Update others network parts like servo
Expand All @@ -47,3 +44,7 @@ execute
run function itemio:impl/cable/init/gen_network
tag @s remove itemio.cable.me

#handeling custom model data
scoreboard players set @s itemio.math 0
scoreboard players operation @s itemio.math = #model_final itemio.math
function #itemio:event/cable_update
7 changes: 7 additions & 0 deletions data/itemio/functions/impl/cable/init/gen_network.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,12 @@ scoreboard players operation @s itemio.network_id.high = #temp_high itemio.math
scoreboard players operation @s itemio.network.process_queue = #temp_low itemio.math
scoreboard players operation @s itemio.network.process_queue %= #process_queue itemio.math


#tellraw @a ["Initial value : ",{"score":{"name":"#model_final","objective":"itemio.math"}}]
function itemio:impl/servo/calc_cable_model
#tellraw @a ["Final value : ",{"score":{"name":"#model_final","objective":"itemio.math"}}]
#tellraw @a ["% : ",{"score":{"name":"#model_final_temp","objective":"itemio.math"}}]


scoreboard players set @s itemio.math 1
function #itemio:event/network_update
43 changes: 43 additions & 0 deletions data/itemio/functions/impl/cable/update_model.mcfunction
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@


scoreboard players set #model_final itemio.math 0

execute
align xyz positioned ~.5 ~-.5 ~.5
if entity @e[type=#itemio:cables,tag=itemio.cable.initialised,distance=..0.5001,limit=1,sort=nearest]
run scoreboard players add #model_final itemio.math 2
execute
align xyz positioned ~.5 ~1.5 ~.5
if entity @e[type=#itemio:cables,tag=itemio.cable.initialised,distance=..0.5001,limit=1,sort=nearest]
run scoreboard players add #model_final itemio.math 1

execute
align xyz positioned ~.5 ~.5 ~-.5
if entity @e[type=#itemio:cables,tag=itemio.cable.initialised,distance=..0.5001,limit=1,sort=nearest]
run scoreboard players add #model_final itemio.math 4
execute
align xyz positioned ~.5 ~.5 ~1.5
if entity @e[type=#itemio:cables,tag=itemio.cable.initialised,distance=..0.5001,limit=1,sort=nearest]
run scoreboard players add #model_final itemio.math 8

execute
align xyz positioned ~-.5 ~.5 ~.5
if entity @e[type=#itemio:cables,tag=itemio.cable.initialised,distance=..0.5001,limit=1,sort=nearest]
run scoreboard players add #model_final itemio.math 16
execute
align xyz positioned ~1.5 ~.5 ~.5
if entity @e[type=#itemio:cables,tag=itemio.cable.initialised,distance=..0.5001,limit=1,sort=nearest]
run scoreboard players add #model_final itemio.math 32


execute
align xyz positioned ~.5 ~.5 ~.5
as @e[type=#itemio:network,tag=itemio.network,tag=!itemio.cable,distance=..0.5001]
run function itemio:impl/servo/calc_cable_model



#handeling custom model data
scoreboard players set @s itemio.math 0
scoreboard players operation @s itemio.math = #model_final itemio.math
function #itemio:event/cable_update
11 changes: 11 additions & 0 deletions data/itemio/functions/impl/load.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,17 @@

gamerule maxCommandChainLength 2147483647
scoreboard objectives add itemio.math dummy
scoreboard players set #0 itemio.math 0
scoreboard players set #1 itemio.math 1
scoreboard players set #2 itemio.math 2
scoreboard players set #4 itemio.math 4
scoreboard players set #8 itemio.math 8
scoreboard players set #16 itemio.math 16
scoreboard players set #32 itemio.math 32
scoreboard players set #64 itemio.math 64
scoreboard players set #128 itemio.math 128
scoreboard players set #256 itemio.math 256

scoreboard objectives add itemio.io dummy
scoreboard objectives add itemio.math.input dummy
scoreboard objectives add itemio.math.output dummy
Expand Down
37 changes: 37 additions & 0 deletions data/itemio/functions/impl/servo/calc_cable_model.mcfunction
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
scoreboard players operation #model_final_temp itemio.math = #model_final itemio.math
execute
if data entity @s {Facing:0b}
run function ~/down:
scoreboard players operation #model_final_temp itemio.math %= #2 itemio.math
execute if score #model_final_temp itemio.math matches 0 run scoreboard players add #model_final itemio.math 1
execute
if data entity @s {Facing:1b}
run function ~/up:
scoreboard players operation #model_final_temp itemio.math /= #2 itemio.math
scoreboard players operation #model_final_temp itemio.math %= #2 itemio.math
execute if score #model_final_temp itemio.math matches 0 run scoreboard players add #model_final itemio.math 2
execute
if data entity @s {Facing:2b}
run function ~/north:
scoreboard players operation #model_final_temp itemio.math /= #8 itemio.math
scoreboard players operation #model_final_temp itemio.math %= #2 itemio.math
execute if score #model_final_temp itemio.math matches 0 run scoreboard players add #model_final itemio.math 8
execute
if data entity @s {Facing:3b}
run function ~/south:
scoreboard players operation #model_final_temp itemio.math /= #4 itemio.math
scoreboard players operation #model_final_temp itemio.math %= #2 itemio.math
execute if score #model_final_temp itemio.math matches 0 run scoreboard players add #model_final itemio.math 4

execute
if data entity @s {Facing:4b}
run function ~/west:
scoreboard players operation #model_final_temp itemio.math /= #32 itemio.math
scoreboard players operation #model_final_temp itemio.math %= #2 itemio.math
execute if score #model_final_temp itemio.math matches 0 run scoreboard players add #model_final itemio.math 32
execute
if data entity @s {Facing:5b}
run function ~/east:
scoreboard players operation #model_final_temp itemio.math /= #16 itemio.math
scoreboard players operation #model_final_temp itemio.math %= #2 itemio.math
execute if score #model_final_temp itemio.math matches 0 run scoreboard players add #model_final itemio.math 16
3 changes: 3 additions & 0 deletions data/itemio/functions/impl/servo/destroy.mcfunction
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# @public

execute at @s as @e[type=#itemio:cables,tag=itemio.cable.initialised,distance=..0.5001,limit=1,sort=nearest] run function itemio:impl/cable/update_model
51 changes: 39 additions & 12 deletions data/itemio/functions/impl/servo/init.mcfunction
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,50 @@ tag @s add itemio.network
tag @s add itemio.servo.initialised
scoreboard players set @s itemio.network_id.low 0
scoreboard players set @s itemio.network_id.high 0
execute align xyz positioned ~.5 ~.5 ~.5 run tag @e[type=#itemio:cables,tag=itemio.cable.initialised,distance=..0.5001,limit=1,sort=nearest] add itemio.cable.me
scoreboard players operation @s itemio.network_id.low = @e[tag=itemio.cable.me,limit=1] itemio.network_id.low
scoreboard players operation @s itemio.network_id.high = @e[tag=itemio.cable.me,limit=1] itemio.network_id.high

scoreboard players operation @s itemio.network.process_queue = @s itemio.network_id.low
scoreboard players operation @s itemio.network.process_queue %= #process_queue itemio.math

execute unless entity @e[tag=itemio.cable.me,limit=1] run scoreboard players set @s itemio.network.process_queue -1

# initial value for scores
scoreboard players set @s itemio.math 0
scoreboard players set @s itemio.servo.cooldown 0
scoreboard players add @s itemio.servo.stack_limit 0
scoreboard players add @s itemio.servo.retry_limit 0

execute if score @s itemio.servo.stack_limit matches ..0 run scoreboard players set @s itemio.servo.stack_limit 1
execute if score @s itemio.servo.retry_limit matches ..0 run scoreboard players set @s itemio.servo.retry_limit 1
execute unless score @s itemio.servo.stack_limit matches 0.. run scoreboard players set @s itemio.servo.stack_limit 1
execute unless score @s itemio.servo.retry_limit matches 0.. run scoreboard players set @s itemio.servo.retry_limit 1

# copy network id to process queue
execute align xyz positioned ~.5 ~.5 ~.5 run tag @e[type=#itemio:cables,tag=itemio.cable.initialised,distance=..0.5001,limit=1,sort=nearest] add itemio.cable.me

scoreboard players set #if_entity_exist itemio.math 0
execute
if entity @e[tag=itemio.cable.me,limit=1]
run function ~/if_cable:
scoreboard players set @s itemio.math 1
scoreboard players set #if_entity_exist itemio.math 1
scoreboard players operation @s itemio.network_id.low = @e[tag=itemio.cable.me,limit=1] itemio.network_id.low
scoreboard players operation @s itemio.network_id.high = @e[tag=itemio.cable.me,limit=1] itemio.network_id.high

scoreboard players operation @s itemio.network.process_queue = @s itemio.network_id.low
scoreboard players operation @s itemio.network.process_queue %= #process_queue itemio.math

scoreboard players operation #model_final itemio.math = @e[tag=itemio.cable.me,limit=1] itemio.math
function itemio:impl/servo/calc_cable_model
execute
as @e[tag=itemio.cable.me,limit=1]
run function ./reload_model:
scoreboard players operation @s itemio.math = #model_final itemio.math
function #itemio:event/cable_update


# if not exist any cable then set process queue to -1
execute
if score #if_entity_exist itemio.math matches 0
run function ~/unless_cable:
scoreboard players set @s itemio.network.process_queue -1






scoreboard players set @s itemio.math 0
execute unless score @s itemio.network_id.low matches 0 run scoreboard players set @s itemio.math 1
function #itemio:event/network_update
tag @e[tag=itemio.cable.me] remove itemio.cable.me
5 changes: 5 additions & 0 deletions data/itemio/tags/functions/calls/servos/destroy.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"values": [
"itemio:impl/calls/servo/destroy"
]
}

0 comments on commit 559fe31

Please sign in to comment.