From 71c82acdb155b1aeeb203c5aa31ab10dc1ebbb10 Mon Sep 17 00:00:00 2001 From: Ghoulboy78 Date: Wed, 24 Feb 2021 09:35:23 +0100 Subject: [PATCH 01/12] Update ai_tracker.sc --- .../assets/carpet/scripts/ai_tracker.sc | 139 ++++++++---------- 1 file changed, 58 insertions(+), 81 deletions(-) diff --git a/src/main/resources/assets/carpet/scripts/ai_tracker.sc b/src/main/resources/assets/carpet/scripts/ai_tracker.sc index 2e1977e3..d4462686 100644 --- a/src/main/resources/assets/carpet/scripts/ai_tracker.sc +++ b/src/main/resources/assets/carpet/scripts/ai_tracker.sc @@ -1,4 +1,4 @@ -__command() -> ' +_command() -> ' ai_tracker allows to display some extra information about various entities AI activity @@ -18,73 +18,13 @@ Current supported actions - breeding info for villagers Settings you may want to change - - toggle_boxes: hides/shows large boxes and spheres + - toggle boxes: hides/shows large boxes and spheres - update_frequency: changes update speed - clear: removes all options - transparency: default opacity of shapes, 8 for start '; -global_duration = 12; -global_interval = 10; - -global_opacity = 8; - -global_display_boxes = true; - - - -global_range = 48; - -// list of triples - [entity_type, feature, callback] -global_active_functions = []; -global_feature_switches = {}; -global_tracker_running = false; - -villager_iron_golem_spawning() -> __toggle('villager_iron_golem_spawning', null); -pathfinding() -> __toggle('pathfinding', null); -velocity() -> __toggle('velocity', null); -villager_breeding() -> __toggle('villager_breeding', null); -villager_buddy_detection() -> __toggle('villager_buddy_detection', null); -item_pickup() -> __toggle('item_pickup', null); -portal_cooldown() -> __toggle('portal_cooldown', null); -health() -> __toggle('health', null); -//xpstack() -> __toggle('xpstack', null); //1.17 feature - -toggle_boxes() -> -( - global_display_boxes = !global_display_boxes; - null; -); - -update_frequency(ticks) -> -( - if (type(ticks) != 'number' || ticks <=0 || ticks > 100, exit('Ticks needs to be a positive number from 1 to 100')); - global_interval = ticks; - global_duration = ticks + 2; - null; -); - -transparency(alpha) -> -( - if (type(alpha) != 'number' || alpha <=0 || alpha > 255, exit('Ticks needs to be a number from 0 to 255')); - global_opacity = floor(alpha); - null; -); - - - -villager_hostile_detection(hostile) -> -( - if (!has(global_hostile_to_villager:hostile), - print(player(), 'Unknown hostile that affects villagers, possible options are: '+keys(global_hostile_to_villager)); - exit(null); - ); - __toggle('villager_hostile_detection', hostile); -); - -global_entity_positions = {}; - global_functions = { 'villager_iron_golem_spawning' -> { 'villager' -> [ @@ -145,8 +85,9 @@ global_functions = { [10+half_width,10+height,10+half_width], 0x65432100, 'buddy detection', false ); + [x,y,z] = pos(e); current_id = e~'id'; - buddies = entity_area('villager', e, 10, 10, 10); + buddies = entity_area('villager', x, y+height/2, z, 10+half_width, 10+height/2, 10+half_width); nb = length(buddies); for (filter(buddies, _~'id' != current_id), visuals+=['line', global_duration, 'from', pos(e), 'to', pos(_), 'color', 0xffff00ff]; @@ -381,6 +322,57 @@ global_functions = { }, }; +global_hostile_to_villager = { + 'drowned' -> 8, + 'evoker'-> 12, + 'husk' -> 8, + 'illusioner' -> 12, + 'pillager' -> 15, + 'ravager' -> 12, + 'vex' -> 8, + 'vindicator' -> 10, + 'zoglin' -> 10, + 'zombie' -> 8, + 'zombie_villager' -> 8 +}; + + +__config() ->{ + 'commands'->{ + ''->'_command', + 'clear'->'clear', + 'toggle boxes'->_()->global_display_boxes = !global_display_boxes, + 'toggle '->['__toggle',null], + 'toggle villager '->_(d)->__toggle('villager_'+d,null), + 'toggle villager hostile_detection '->_(h)->__toggle('villager_hostile_detection',h), + 'update_frequency '->_(ticks)->(global_interval = ticks;global_duration = ticks + 2), + 'transparency '->_(alpha)->global_opacity = floor(alpha) + }, + 'arguments'->{ + 'display'->{'type'->'term','options'->['item_pickup','velocity','portal_cooldown','health','pathfinding','xpstack']}, + 'villager_display'->{'type'->'term','options'->['iron_golem_spawning','buddy_detection','hostile_detection','breeding']}, + 'ticks'->{'type'->'int','min'->0,'max'->100}, + 'alpha'->{'type'->'int','min'->0,'max'->255}, + 'hostile'->{'type'->'term','options'->keys(global_hostile_to_villager)} + } +}; + +global_duration = 12; +global_interval = 10; + +global_opacity = 8; + +global_display_boxes = true; + +global_range = 48; + +// list of triples - [entity_type, feature, callback] +global_active_functions = []; +global_feature_switches = {}; +global_tracker_running = false; + +global_entity_positions = {}; + global_villager_food = { 'bread' -> 4, 'potato' -> 1, @@ -429,20 +421,6 @@ __mark_path_element(path_element, visuals) -> ) ); -global_hostile_to_villager = { - 'drowned' -> 8, - 'evoker'-> 12, - 'husk' -> 8, - 'illusioner' -> 12, - 'pillager' -> 15, - 'ravager' -> 12, - 'vex' -> 8, - 'vindicator' -> 10, - 'zoglin' -> 10, - 'zombie' -> 8, - 'zombie_villager' -> 8 -}; - __is_hostile(v, m) -> ( mob = m~'type'; @@ -517,8 +495,9 @@ __tick_tracker() -> return() ); p = player(); + [px, py, pz] = pos(p); in_dimension(p, - for (entity_area('valid', p, global_range, global_range, global_range), + for (entity_area('valid', px, py, pz, global_range, global_range, global_range), __handle_entity(_) ) ); @@ -578,6 +557,4 @@ __handle_entity(e) -> ); ); draw_shape(shapes_to_display); -); - - +); \ No newline at end of file From 5287fed7121d9ac9729c3ebc625fd2eca124de94 Mon Sep 17 00:00:00 2001 From: Ghoulboy78 Date: Wed, 24 Feb 2021 09:39:04 +0100 Subject: [PATCH 02/12] Update distance_beta.sc --- .../assets/carpet/scripts/distance_beta.sc | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/resources/assets/carpet/scripts/distance_beta.sc b/src/main/resources/assets/carpet/scripts/distance_beta.sc index 34acbd4f..2c26d477 100644 --- a/src/main/resources/assets/carpet/scripts/distance_beta.sc +++ b/src/main/resources/assets/carpet/scripts/distance_beta.sc @@ -60,11 +60,11 @@ global_generators = { _create_shapes(mode, from, to) -> ( shapes = call(global_generators:mode, from+[0, 0.07, 0], to+[0, 0.07, 0]); - shapes += ['label', 'pos',to+[0,0.2,0], 'align', 'right', 'indent', -1.5, 'text',format('rb Cylindrical:')]; - shapes += ['label', 'pos',to+[0,0.2,0], 'align', 'left', 'text',_round(_euclidean(from, [to:0, from:1, to:2]), 0.001)]; + shapes += ['label', 'pos',to+[0,0.2,0], 'align', 'right', 'indent', -1.5, 'text',format('rb Cylindrical:')]; + shapes += ['label', 'pos',to+[0,0.2,0], 'align', 'left', 'text',_round(_euclidean(from, [to:0, from:1, to:2]), 0.001)]; shapes += ['label', 'pos',to+[0,0.2,0], 'height', 1, 'align', 'right', 'indent', -1.5, 'text',format('rb Manhattan:')]; shapes += ['label', 'pos',to+[0,0.2,0], 'height', 1, 'align', 'left', 'text',_round(_manhattan(from,to),0.001)]; - shapes += ['label', 'pos',to+[0,0.2,0], 'height', 2, 'align', 'right', 'indent', -1.5, 'text',format('rb Euclidian:')]; + shapes += ['label', 'pos',to+[0,0.2,0], 'height', 2, 'align', 'right', 'indent', -1.5, 'text',format('rb Euclidean:')]; shapes += ['label', 'pos',to+[0,0.2,0], 'height', 2, 'align', 'left', 'text',_round(_euclidean(from,to),0.001)]; map(shapes, put(_, 1, [20, 'player', player()], 'extend'); _); ); @@ -77,9 +77,8 @@ set_start(pos)->( ); set_mode(mode)->( - if (global_display_modes ~ mode, - global_current_mode = mode - ) + global_current_mode = mode; + print(player(),format('gi Set display mode to '+mode)) ); calculate(end)->( @@ -90,9 +89,12 @@ calculate(end)->( ) ); +_carpets() -> system_info('world_carpet_rules'):'carpets'=='true'; + + on_player_places_block(player, item_tuple, hand, block) -> ( - if(block==global_assist_block, + if(block==global_assist_block && _carpets(), effective_pos = pos(block)+[0.5, 0, 0.5]; if(global_current_start==null||player~'sneaking',//wont complain for first carpet set_start(effective_pos) @@ -104,7 +106,7 @@ on_player_places_block(player, item_tuple, hand, block) -> on_player_uses_item(player, item_tuple, hand) -> ( - if (item_tuple:0 == global_assist_block && hand == 'mainhand', + if (item_tuple:0 == global_assist_block && hand == 'mainhand' && _carpets(), if (player ~'sneaking', global_current_mode = global_display_modes:(global_display_modes ~ global_current_mode + 1); display_title(player, 'actionbar', format('w Distance mode: ','e '+global_current_mode)); @@ -152,4 +154,4 @@ render()->( draw_shape(_); ); schedule(20,'render') -); +); \ No newline at end of file From 41186c1da339c6ca226efc5171108c5e32dc8fda Mon Sep 17 00:00:00 2001 From: Ghoulboy78 Date: Wed, 24 Feb 2021 12:33:50 +0100 Subject: [PATCH 03/12] using in-built distance func (cos previous one wasnt even used lol) --- src/main/resources/assets/carpet/scripts/ai_tracker.sc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/resources/assets/carpet/scripts/ai_tracker.sc b/src/main/resources/assets/carpet/scripts/ai_tracker.sc index d4462686..9ce38942 100644 --- a/src/main/resources/assets/carpet/scripts/ai_tracker.sc +++ b/src/main/resources/assets/carpet/scripts/ai_tracker.sc @@ -1,3 +1,5 @@ +import('math','_euclidean'); + _command() -> ' ai_tracker allows to display some extra information about @@ -424,12 +426,9 @@ __mark_path_element(path_element, visuals) -> __is_hostile(v, m) -> ( mob = m~'type'; - has(global_hostile_to_villager:mob) && (sqrt(reduce(pos(v)-pos(m), _a+_*_ , 0)) <= global_hostile_to_villager:mob) + has(global_hostile_to_villager:mob) && (_euclidean(pos(v)-pos(m)) <= global_hostile_to_villager:mob) ); -__distance(v1, v2) -> sqrt(reduce(v1-v2,_a+_*_ ,0)); - - __toggle(feature, arg) -> ( From 356f3e94d6450a7a40cb173d99ebddca99a94c5b Mon Sep 17 00:00:00 2001 From: Ghoulboy Date: Tue, 2 Mar 2021 18:29:55 +0100 Subject: [PATCH 04/12] fixing editing oopsies --- src/main/resources/assets/carpet/scripts/ai_tracker.sc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/resources/assets/carpet/scripts/ai_tracker.sc b/src/main/resources/assets/carpet/scripts/ai_tracker.sc index 9ce38942..5516b3ba 100644 --- a/src/main/resources/assets/carpet/scripts/ai_tracker.sc +++ b/src/main/resources/assets/carpet/scripts/ai_tracker.sc @@ -89,7 +89,7 @@ global_functions = { ); [x,y,z] = pos(e); current_id = e~'id'; - buddies = entity_area('villager', x, y+height/2, z, 10+half_width, 10+height/2, 10+half_width); + buddies = entity_area('villager', e, 10, 10, 10); nb = length(buddies); for (filter(buddies, _~'id' != current_id), visuals+=['line', global_duration, 'from', pos(e), 'to', pos(_), 'color', 0xffff00ff]; @@ -348,7 +348,7 @@ __config() ->{ 'toggle villager '->_(d)->__toggle('villager_'+d,null), 'toggle villager hostile_detection '->_(h)->__toggle('villager_hostile_detection',h), 'update_frequency '->_(ticks)->(global_interval = ticks;global_duration = ticks + 2), - 'transparency '->_(alpha)->global_opacity = floor(alpha) + 'transparency '->_(alpha)->global_opacity = alpha }, 'arguments'->{ 'display'->{'type'->'term','options'->['item_pickup','velocity','portal_cooldown','health','pathfinding','xpstack']}, @@ -496,7 +496,7 @@ __tick_tracker() -> p = player(); [px, py, pz] = pos(p); in_dimension(p, - for (entity_area('valid', px, py, pz, global_range, global_range, global_range), + for (entity_area('valid', p, global_range, global_range, global_range), __handle_entity(_) ) ); @@ -556,4 +556,4 @@ __handle_entity(e) -> ); ); draw_shape(shapes_to_display); -); \ No newline at end of file +); From a957af32d16b4d62ae6d1f0257b9b20889b41ebf Mon Sep 17 00:00:00 2001 From: Ghoulboy Date: Tue, 2 Mar 2021 18:32:04 +0100 Subject: [PATCH 05/12] removing _carpets stuff to detach from carpet rules --- .../resources/assets/carpet/scripts/distance_beta.sc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/resources/assets/carpet/scripts/distance_beta.sc b/src/main/resources/assets/carpet/scripts/distance_beta.sc index 2c26d477..71a3a187 100644 --- a/src/main/resources/assets/carpet/scripts/distance_beta.sc +++ b/src/main/resources/assets/carpet/scripts/distance_beta.sc @@ -89,12 +89,9 @@ calculate(end)->( ) ); -_carpets() -> system_info('world_carpet_rules'):'carpets'=='true'; - - on_player_places_block(player, item_tuple, hand, block) -> ( - if(block==global_assist_block && _carpets(), + if(block==global_assist_block, effective_pos = pos(block)+[0.5, 0, 0.5]; if(global_current_start==null||player~'sneaking',//wont complain for first carpet set_start(effective_pos) @@ -106,7 +103,7 @@ on_player_places_block(player, item_tuple, hand, block) -> on_player_uses_item(player, item_tuple, hand) -> ( - if (item_tuple:0 == global_assist_block && hand == 'mainhand' && _carpets(), + if (item_tuple:0 == global_assist_block && hand == 'mainhand', if (player ~'sneaking', global_current_mode = global_display_modes:(global_display_modes ~ global_current_mode + 1); display_title(player, 'actionbar', format('w Distance mode: ','e '+global_current_mode)); @@ -154,4 +151,4 @@ render()->( draw_shape(_); ); schedule(20,'render') -); \ No newline at end of file +); From 0a5417638302f38b22886aeaf249eba6692f3429 Mon Sep 17 00:00:00 2001 From: Ghoulboy Date: Wed, 31 Mar 2021 16:05:53 +0200 Subject: [PATCH 06/12] removing random variable declaration --- src/main/resources/assets/carpet/scripts/ai_tracker.sc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/assets/carpet/scripts/ai_tracker.sc b/src/main/resources/assets/carpet/scripts/ai_tracker.sc index 5516b3ba..d24e12c1 100644 --- a/src/main/resources/assets/carpet/scripts/ai_tracker.sc +++ b/src/main/resources/assets/carpet/scripts/ai_tracker.sc @@ -494,7 +494,6 @@ __tick_tracker() -> return() ); p = player(); - [px, py, pz] = pos(p); in_dimension(p, for (entity_area('valid', p, global_range, global_range, global_range), __handle_entity(_) From e3f1302be09bc192e70d4090e599ece8702470e2 Mon Sep 17 00:00:00 2001 From: Ghoulboy Date: Thu, 8 Apr 2021 18:03:45 +0200 Subject: [PATCH 07/12] Removing random line of code... --- src/main/resources/assets/carpet/scripts/ai_tracker.sc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/assets/carpet/scripts/ai_tracker.sc b/src/main/resources/assets/carpet/scripts/ai_tracker.sc index d24e12c1..e845d58a 100644 --- a/src/main/resources/assets/carpet/scripts/ai_tracker.sc +++ b/src/main/resources/assets/carpet/scripts/ai_tracker.sc @@ -87,7 +87,6 @@ global_functions = { [10+half_width,10+height,10+half_width], 0x65432100, 'buddy detection', false ); - [x,y,z] = pos(e); current_id = e~'id'; buddies = entity_area('villager', e, 10, 10, 10); nb = length(buddies); From 6ef85437a9bfdacbfeda030caa32c0c23ef169d6 Mon Sep 17 00:00:00 2001 From: gnembon Date: Fri, 16 Apr 2021 23:07:00 -0300 Subject: [PATCH 08/12] fixed ai_tracker commands --- .../resources/assets/carpet/scripts/ai_tracker.sc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/resources/assets/carpet/scripts/ai_tracker.sc b/src/main/resources/assets/carpet/scripts/ai_tracker.sc index e845d58a..c7ee3db8 100644 --- a/src/main/resources/assets/carpet/scripts/ai_tracker.sc +++ b/src/main/resources/assets/carpet/scripts/ai_tracker.sc @@ -1,5 +1,3 @@ -import('math','_euclidean'); - _command() -> ' ai_tracker allows to display some extra information about @@ -342,16 +340,16 @@ __config() ->{ 'commands'->{ ''->'_command', 'clear'->'clear', - 'toggle boxes'->_()->global_display_boxes = !global_display_boxes, - 'toggle '->['__toggle',null], - 'toggle villager '->_(d)->__toggle('villager_'+d,null), - 'toggle villager hostile_detection '->_(h)->__toggle('villager_hostile_detection',h), + 'toggle_boxes'->_()->global_display_boxes = !global_display_boxes, + ''->['__toggle',null], + 'villager '->_(d)->__toggle('villager_'+d,null), + 'villager hostile_detection '->_(h)->__toggle('villager_hostile_detection',h), 'update_frequency '->_(ticks)->(global_interval = ticks;global_duration = ticks + 2), 'transparency '->_(alpha)->global_opacity = alpha }, 'arguments'->{ 'display'->{'type'->'term','options'->['item_pickup','velocity','portal_cooldown','health','pathfinding','xpstack']}, - 'villager_display'->{'type'->'term','options'->['iron_golem_spawning','buddy_detection','hostile_detection','breeding']}, + 'aspect'->{'type'->'term','options'->['iron_golem_spawning','buddy_detection','hostile_detection','breeding']}, 'ticks'->{'type'->'int','min'->0,'max'->100}, 'alpha'->{'type'->'int','min'->0,'max'->255}, 'hostile'->{'type'->'term','options'->keys(global_hostile_to_villager)} @@ -425,7 +423,7 @@ __mark_path_element(path_element, visuals) -> __is_hostile(v, m) -> ( mob = m~'type'; - has(global_hostile_to_villager:mob) && (_euclidean(pos(v)-pos(m)) <= global_hostile_to_villager:mob) + has(global_hostile_to_villager:mob) && (sqrt(reduce(pos(v)-pos(m), _a+_*_ , 0)) <= global_hostile_to_villager:mob) ); From 18705e44ba531cd63fa3df595f0f6ae0782f6f14 Mon Sep 17 00:00:00 2001 From: gnembon Date: Fri, 16 Apr 2021 23:23:42 -0300 Subject: [PATCH 09/12] fixed distance_beta app --- src/main/resources/assets/carpet/scripts/distance_beta.sc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/carpet/scripts/distance_beta.sc b/src/main/resources/assets/carpet/scripts/distance_beta.sc index 71a3a187..c4ad94cf 100644 --- a/src/main/resources/assets/carpet/scripts/distance_beta.sc +++ b/src/main/resources/assets/carpet/scripts/distance_beta.sc @@ -66,7 +66,7 @@ _create_shapes(mode, from, to) -> shapes += ['label', 'pos',to+[0,0.2,0], 'height', 1, 'align', 'left', 'text',_round(_manhattan(from,to),0.001)]; shapes += ['label', 'pos',to+[0,0.2,0], 'height', 2, 'align', 'right', 'indent', -1.5, 'text',format('rb Euclidean:')]; shapes += ['label', 'pos',to+[0,0.2,0], 'height', 2, 'align', 'left', 'text',_round(_euclidean(from,to),0.001)]; - map(shapes, put(_, 1, [20, 'player', player()], 'extend'); _); + map(shapes, put(_, 1, [40, 'player', player()], 'extend'); _); ); __mktp(pos) -> str('!/tp %.6f %.6f %.6f', pos); From 38285d4221a733b11b20d59943ff33df0eb95fb3 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sat, 17 Apr 2021 00:29:13 -0300 Subject: [PATCH 10/12] running functions will cause them not track the commandsource. fixes #815 --- .../java/carpet/script/utils/FixedCommandSource.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/carpet/script/utils/FixedCommandSource.java b/src/main/java/carpet/script/utils/FixedCommandSource.java index 939cb9d2..beb5e566 100644 --- a/src/main/java/carpet/script/utils/FixedCommandSource.java +++ b/src/main/java/carpet/script/utils/FixedCommandSource.java @@ -37,7 +37,7 @@ public class FixedCommandSource extends ServerCommandSource public FixedCommandSource(ServerCommandSource original, Vec3d pos, Value[] error, List chatOutput) { super(CommandOutput.DUMMY, pos, Vec2f.ZERO, original.getWorld(), CarpetSettings.runPermissionLevel, - original.getName(), original.getDisplayName(), original.getMinecraftServer(), original.getEntity(), true, + original.getName(), original.getDisplayName(), original.getMinecraftServer(), original.getEntity(), false, (ctx, succ, res) -> { }, EntityAnchorArgumentType.EntityAnchor.FEET); position = pos; world = original.getWorld(); @@ -80,11 +80,9 @@ public class FixedCommandSource extends ServerCommandSource return this; } - @Override - public ServerCommandSource withSilent() - { - return this; - } + //@Override // only used in fuctions and we really don't care to track these actually, besides the basic output + // also other overrides target ONLY execute command, which withSilent doesn't care bout. + //public ServerCommandSource withSilent() { return this; } @Override public ServerCommandSource withLevel(int level) From 4e5184009df3345c39d81ee2054ca7ef5ed96209 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sat, 17 Apr 2021 00:35:47 -0300 Subject: [PATCH 11/12] incorrect carpet data shoudn't crash the client. Fixes #812 --- .../java/carpet/network/ClientNetworkHandler.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/carpet/network/ClientNetworkHandler.java b/src/main/java/carpet/network/ClientNetworkHandler.java index 477c556b..13d25492 100644 --- a/src/main/java/carpet/network/ClientNetworkHandler.java +++ b/src/main/java/carpet/network/ClientNetworkHandler.java @@ -22,7 +22,7 @@ import java.util.function.BiConsumer; public class ClientNetworkHandler { - private static Map> dataHandlers = new HashMap>(); + private static final Map> dataHandlers = new HashMap>(); static { dataHandlers.put("Rules", (p, t) -> { @@ -61,7 +61,7 @@ public class ClientNetworkHandler if (rule != null) { String value = ruleNBT.getString("Value"); - rule.set(null, value); + try { rule.set(null, value); } catch (Exception ignored) { } } } }); @@ -133,8 +133,15 @@ public class ClientNetworkHandler if (compound == null) return; for (String key: compound.getKeys()) { - if (dataHandlers.containsKey(key)) - dataHandlers.get(key).accept(player, compound.get(key)); + if (dataHandlers.containsKey(key)) { + try { + dataHandlers.get(key).accept(player, compound.get(key)); + } + catch (Exception exc) + { + CarpetSettings.LOG.info("Corrupt carpet data for "+key); + } + } else CarpetSettings.LOG.error("Unknown carpet data: "+key); } From 3e24c246482a4c1b05a4c0c2d634d8c06a45e786 Mon Sep 17 00:00:00 2001 From: gnembon Date: Sat, 17 Apr 2021 00:47:12 -0300 Subject: [PATCH 12/12] silenced obtrusive log message with custom biomes. Fixes #810 --- .../mixins/BiomeArray_cleanLogsMixin.java | 21 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 1 + 2 files changed, 22 insertions(+) create mode 100644 src/main/java/carpet/mixins/BiomeArray_cleanLogsMixin.java diff --git a/src/main/java/carpet/mixins/BiomeArray_cleanLogsMixin.java b/src/main/java/carpet/mixins/BiomeArray_cleanLogsMixin.java new file mode 100644 index 00000000..cf7fc1a0 --- /dev/null +++ b/src/main/java/carpet/mixins/BiomeArray_cleanLogsMixin.java @@ -0,0 +1,21 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.world.biome.source.BiomeArray; +import org.apache.logging.log4j.Logger; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(BiomeArray.class) +public class BiomeArray_cleanLogsMixin +{ + @Redirect(method = "(Lnet/minecraft/util/collection/IndexedIterable;[I)V", at = @At( + value = "INVOKE", + target = "Lorg/apache/logging/log4j/Logger;warn(Ljava/lang/String;)V") + ) + private void skipLog(Logger logger, String message) + { + if (!CarpetSettings.cleanLogs) logger.warn(message); + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index 724b8cf7..bdaa2cdb 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -215,6 +215,7 @@ "DebugRenderer_scarpetRenderMixin", "WorldRenderer_scarpetRenderMixin", + "BiomeArray_cleanLogsMixin", "SoundEngineInt_cleanLogsMixin", "SoundSystem_cleanLogsMixin" ],