From 0c604593bb27fa7b86690a2646ef8d54fc811cd5 Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 3 Dec 2020 23:30:42 -0400 Subject: [PATCH] added ability to render shapes around any entity --- .../assets/carpet/scripts/overlay.sc | 62 +++++++++---------- 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/src/main/resources/assets/carpet/scripts/overlay.sc b/src/main/resources/assets/carpet/scripts/overlay.sc index a78aa78f..ed05761e 100644 --- a/src/main/resources/assets/carpet/scripts/overlay.sc +++ b/src/main/resources/assets/carpet/scripts/overlay.sc @@ -36,22 +36,15 @@ __config() -> 'slime_chunks' -> ['__toggle', 'slime_chunks', 'chunks'], 'portal coordinates' -> ['__toggle', 'coords', 'portals'], 'portal links' -> ['__toggle', 'links', 'portals'], - ' following ' -> ['display_shape', [null,0xffffffff], true], - ' at ' -> ['display_shape', [null,0xffffffff], false], - ' following ' -> ['display_shape', true], - ' at ' -> ['display_shape', false], + ' following ' -> ['display_shape', [null,0xffffffff], true], + ' at ' -> ['display_shape', [null,0xffffffff], false], + ' following ' -> ['display_shape', true], + ' at ' -> ['display_shape', false], ' clear' -> 'clear_shape', 'clear' -> 'clear', }, 'arguments' -> { - 'structure' -> {'type' -> 'term', 'suggest' -> [ - 'monument', 'fortress', 'mansion', 'jungle_pyramid', - 'desert_pyramid', 'endcity', 'igloo', 'shipwreck', - 'swamp_hut', 'stronghold', 'ocean_ruin', 'buried_treasure', - 'pillager_outpost', 'mineshaft', 'village', 'nether_fossil', - 'bastion_remnant', 'ruined_portal' - ]}, - 'player' -> {'type' -> 'players', 'single' -> true}, + 'structure' -> {'type' -> 'term', 'suggest' -> plop():'structures' }, 'radius' -> {'type' -> 'int', 'min' -> 0, 'max' -> 1024, 'suggest' -> [128, 24, 32]}, 'shape' -> {'type' -> 'term', 'options' -> keys(global_shapes) }, 'color' -> {'type' -> 'teamcolor'} @@ -59,29 +52,30 @@ __config() -> }; -display_shape(shape, r, player, color, following) -> +display_shape(shape, r, entities, color, following) -> ( - - player = player(player); - if (!player, return()); - if (shape == 'sphere', - shape_config = { - 'center' -> if(following, [0,0,0], pos(player)), - 'radius' -> r - } - , shape == 'box', - shape_config = { - 'from' -> if(following, [-r,-r,-r], pos(player)-r), - 'to' -> if(following, [r,r,r], pos(player)+r) - } - ); - if (shape_config, - if (following, shape_config:'follow' = player); - shape_config:'fill' = color:1 - 200; - shape_config:'color' = color:1; - shape_config:'line' = 5; - draw_shape(shape, 72000, shape_config); - global_shapes:shape += shape_config; + thicc = max(1, floor(6-length(entities)/2)); + fillc = 250 - 100/(length(entities)+1); + for (entities, + if (shape == 'sphere', + shape_config = { + 'center' -> if(following, [0,0,0], pos(_)), + 'radius' -> r + } + , shape == 'box', + shape_config = { + 'from' -> if(following, [-r,-r,-r], pos(_)-r), + 'to' -> if(following, [r,r,r], pos(_)+r) + } + ); + if (shape_config, + if (following, shape_config:'follow' = _); + shape_config:'fill' = color:1 - fillc; + shape_config:'color' = color:1; + shape_config:'line' = thicc; + draw_shape(shape, 72000, shape_config); + global_shapes:shape += shape_config; + ) ) );