├── .editorconfig ├── .github └── workflows │ └── gradle_build.yml ├── .gitignore ├── LICENSE.md ├── README.md ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── lib ├── lambda-3.1-api-source.jar └── lambda-3.1-api.jar ├── setupWorkspace.sh └── src ├── main ├── kotlin │ └── com │ │ └── lambda │ │ ├── PacketFlightController.kt │ │ └── modules │ │ └── PacketFlight.kt └── resources │ └── plugin_info.json └── test └── kotlin └── ClassTest.kt /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | end_of_line = lf 4 | indent_size = 4 5 | indent_style = space 6 | insert_final_newline = false 7 | max_line_length = 120 8 | tab_width = 4 9 | ij_continuation_indent_size = 8 10 | ij_formatter_off_tag = @formatter:off 11 | ij_formatter_on_tag = @formatter:on 12 | ij_formatter_tags_enabled = false 13 | ij_smart_tabs = false 14 | ij_visual_guides = none 15 | ij_wrap_on_typing = false 16 | 17 | [*.css] 18 | ij_css_align_closing_brace_with_properties = false 19 | ij_css_blank_lines_around_nested_selector = 1 20 | ij_css_blank_lines_between_blocks = 1 21 | ij_css_brace_placement = end_of_line 22 | ij_css_enforce_quotes_on_format = false 23 | ij_css_hex_color_long_format = false 24 | ij_css_hex_color_lower_case = false 25 | ij_css_hex_color_short_format = false 26 | ij_css_hex_color_upper_case = false 27 | ij_css_keep_blank_lines_in_code = 2 28 | ij_css_keep_indents_on_empty_lines = false 29 | ij_css_keep_single_line_blocks = false 30 | ij_css_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow 31 | ij_css_space_after_colon = true 32 | ij_css_space_before_opening_brace = true 33 | ij_css_use_double_quotes = true 34 | ij_css_value_alignment = do_not_align 35 | 36 | [*.java] 37 | ij_continuation_indent_size = 4 38 | ij_java_align_consecutive_assignments = false 39 | ij_java_align_consecutive_variable_declarations = false 40 | ij_java_align_group_field_declarations = false 41 | ij_java_align_multiline_annotation_parameters = false 42 | ij_java_align_multiline_array_initializer_expression = false 43 | ij_java_align_multiline_assignment = false 44 | ij_java_align_multiline_binary_operation = false 45 | ij_java_align_multiline_chained_methods = false 46 | ij_java_align_multiline_extends_list = false 47 | ij_java_align_multiline_for = true 48 | ij_java_align_multiline_method_parentheses = false 49 | ij_java_align_multiline_parameters = true 50 | ij_java_align_multiline_parameters_in_calls = false 51 | ij_java_align_multiline_parenthesized_expression = false 52 | ij_java_align_multiline_records = true 53 | ij_java_align_multiline_resources = true 54 | ij_java_align_multiline_ternary_operation = false 55 | ij_java_align_multiline_text_blocks = false 56 | ij_java_align_multiline_throws_list = false 57 | ij_java_align_subsequent_simple_methods = false 58 | ij_java_align_throws_keyword = false 59 | ij_java_annotation_parameter_wrap = off 60 | ij_java_array_initializer_new_line_after_left_brace = false 61 | ij_java_array_initializer_right_brace_on_new_line = false 62 | ij_java_array_initializer_wrap = off 63 | ij_java_assert_statement_colon_on_next_line = false 64 | ij_java_assert_statement_wrap = off 65 | ij_java_assignment_wrap = off 66 | ij_java_binary_operation_sign_on_next_line = false 67 | ij_java_binary_operation_wrap = off 68 | ij_java_blank_lines_after_anonymous_class_header = 0 69 | ij_java_blank_lines_after_class_header = 0 70 | ij_java_blank_lines_after_imports = 1 71 | ij_java_blank_lines_after_package = 1 72 | ij_java_blank_lines_around_class = 1 73 | ij_java_blank_lines_around_field = 0 74 | ij_java_blank_lines_around_field_in_interface = 0 75 | ij_java_blank_lines_around_initializer = 1 76 | ij_java_blank_lines_around_method = 1 77 | ij_java_blank_lines_around_method_in_interface = 1 78 | ij_java_blank_lines_before_class_end = 0 79 | ij_java_blank_lines_before_imports = 1 80 | ij_java_blank_lines_before_method_body = 0 81 | ij_java_blank_lines_before_package = 0 82 | ij_java_block_brace_style = end_of_line 83 | ij_java_block_comment_at_first_column = true 84 | ij_java_call_parameters_new_line_after_left_paren = false 85 | ij_java_call_parameters_right_paren_on_new_line = false 86 | ij_java_call_parameters_wrap = off 87 | ij_java_case_statement_on_separate_line = true 88 | ij_java_catch_on_new_line = false 89 | ij_java_class_annotation_wrap = split_into_lines 90 | ij_java_class_brace_style = end_of_line 91 | ij_java_class_count_to_use_import_on_demand = 5 92 | ij_java_class_names_in_javadoc = 1 93 | ij_java_do_not_indent_top_level_class_members = false 94 | ij_java_do_not_wrap_after_single_annotation = false 95 | ij_java_do_while_brace_force = never 96 | ij_java_doc_add_blank_line_after_description = true 97 | ij_java_doc_add_blank_line_after_param_comments = false 98 | ij_java_doc_add_blank_line_after_return = false 99 | ij_java_doc_add_p_tag_on_empty_lines = true 100 | ij_java_doc_align_exception_comments = true 101 | ij_java_doc_align_param_comments = true 102 | ij_java_doc_do_not_wrap_if_one_line = false 103 | ij_java_doc_enable_formatting = true 104 | ij_java_doc_enable_leading_asterisks = true 105 | ij_java_doc_indent_on_continuation = false 106 | ij_java_doc_keep_empty_lines = true 107 | ij_java_doc_keep_empty_parameter_tag = true 108 | ij_java_doc_keep_empty_return_tag = true 109 | ij_java_doc_keep_empty_throws_tag = true 110 | ij_java_doc_keep_invalid_tags = true 111 | ij_java_doc_param_description_on_new_line = false 112 | ij_java_doc_preserve_line_breaks = false 113 | ij_java_doc_use_throws_not_exception_tag = true 114 | ij_java_else_on_new_line = false 115 | ij_java_enum_constants_wrap = off 116 | ij_java_extends_keyword_wrap = off 117 | ij_java_extends_list_wrap = off 118 | ij_java_field_annotation_wrap = off 119 | ij_java_finally_on_new_line = false 120 | ij_java_for_brace_force = never 121 | ij_java_for_statement_new_line_after_left_paren = false 122 | ij_java_for_statement_right_paren_on_new_line = false 123 | ij_java_for_statement_wrap = off 124 | ij_java_generate_final_locals = false 125 | ij_java_generate_final_parameters = false 126 | ij_java_if_brace_force = never 127 | ij_java_imports_layout = *, |, javax.**, java.**, |, $* 128 | ij_java_indent_case_from_switch = true 129 | ij_java_insert_inner_class_imports = false 130 | ij_java_insert_override_annotation = true 131 | ij_java_keep_blank_lines_before_right_brace = 2 132 | ij_java_keep_blank_lines_between_package_declaration_and_header = 2 133 | ij_java_keep_blank_lines_in_code = 2 134 | ij_java_keep_blank_lines_in_declarations = 2 135 | ij_java_keep_control_statement_in_one_line = true 136 | ij_java_keep_first_column_comment = true 137 | ij_java_keep_indents_on_empty_lines = false 138 | ij_java_keep_line_breaks = true 139 | ij_java_keep_multiple_expressions_in_one_line = false 140 | ij_java_keep_simple_blocks_in_one_line = false 141 | ij_java_keep_simple_classes_in_one_line = false 142 | ij_java_keep_simple_lambdas_in_one_line = false 143 | ij_java_keep_simple_methods_in_one_line = false 144 | ij_java_label_indent_absolute = false 145 | ij_java_label_indent_size = 0 146 | ij_java_lambda_brace_style = end_of_line 147 | ij_java_layout_static_imports_separately = true 148 | ij_java_line_comment_add_space = false 149 | ij_java_line_comment_at_first_column = true 150 | ij_java_method_annotation_wrap = split_into_lines 151 | ij_java_method_brace_style = end_of_line 152 | ij_java_method_call_chain_wrap = off 153 | ij_java_method_parameters_new_line_after_left_paren = false 154 | ij_java_method_parameters_right_paren_on_new_line = false 155 | ij_java_method_parameters_wrap = off 156 | ij_java_modifier_list_wrap = false 157 | ij_java_names_count_to_use_import_on_demand = 3 158 | ij_java_new_line_after_lparen_in_record_header = false 159 | ij_java_packages_to_use_import_on_demand = java.awt.*, javax.swing.* 160 | ij_java_parameter_annotation_wrap = off 161 | ij_java_parentheses_expression_new_line_after_left_paren = false 162 | ij_java_parentheses_expression_right_paren_on_new_line = false 163 | ij_java_place_assignment_sign_on_next_line = false 164 | ij_java_prefer_longer_names = true 165 | ij_java_prefer_parameters_wrap = false 166 | ij_java_record_components_wrap = normal 167 | ij_java_repeat_synchronized = true 168 | ij_java_replace_instanceof_and_cast = false 169 | ij_java_replace_null_check = true 170 | ij_java_replace_sum_lambda_with_method_ref = true 171 | ij_java_resource_list_new_line_after_left_paren = false 172 | ij_java_resource_list_right_paren_on_new_line = false 173 | ij_java_resource_list_wrap = off 174 | ij_java_rparen_on_new_line_in_record_header = false 175 | ij_java_space_after_closing_angle_bracket_in_type_argument = false 176 | ij_java_space_after_colon = true 177 | ij_java_space_after_comma = true 178 | ij_java_space_after_comma_in_type_arguments = true 179 | ij_java_space_after_for_semicolon = true 180 | ij_java_space_after_quest = true 181 | ij_java_space_after_type_cast = true 182 | ij_java_space_before_annotation_array_initializer_left_brace = false 183 | ij_java_space_before_annotation_parameter_list = false 184 | ij_java_space_before_array_initializer_left_brace = false 185 | ij_java_space_before_catch_keyword = true 186 | ij_java_space_before_catch_left_brace = true 187 | ij_java_space_before_catch_parentheses = true 188 | ij_java_space_before_class_left_brace = true 189 | ij_java_space_before_colon = true 190 | ij_java_space_before_colon_in_foreach = true 191 | ij_java_space_before_comma = false 192 | ij_java_space_before_do_left_brace = true 193 | ij_java_space_before_else_keyword = true 194 | ij_java_space_before_else_left_brace = true 195 | ij_java_space_before_finally_keyword = true 196 | ij_java_space_before_finally_left_brace = true 197 | ij_java_space_before_for_left_brace = true 198 | ij_java_space_before_for_parentheses = true 199 | ij_java_space_before_for_semicolon = false 200 | ij_java_space_before_if_left_brace = true 201 | ij_java_space_before_if_parentheses = true 202 | ij_java_space_before_method_call_parentheses = false 203 | ij_java_space_before_method_left_brace = true 204 | ij_java_space_before_method_parentheses = false 205 | ij_java_space_before_opening_angle_bracket_in_type_parameter = false 206 | ij_java_space_before_quest = true 207 | ij_java_space_before_switch_left_brace = true 208 | ij_java_space_before_switch_parentheses = true 209 | ij_java_space_before_synchronized_left_brace = true 210 | ij_java_space_before_synchronized_parentheses = true 211 | ij_java_space_before_try_left_brace = true 212 | ij_java_space_before_try_parentheses = true 213 | ij_java_space_before_type_parameter_list = false 214 | ij_java_space_before_while_keyword = true 215 | ij_java_space_before_while_left_brace = true 216 | ij_java_space_before_while_parentheses = true 217 | ij_java_space_inside_one_line_enum_braces = false 218 | ij_java_space_within_empty_array_initializer_braces = false 219 | ij_java_space_within_empty_method_call_parentheses = false 220 | ij_java_space_within_empty_method_parentheses = false 221 | ij_java_spaces_around_additive_operators = true 222 | ij_java_spaces_around_assignment_operators = true 223 | ij_java_spaces_around_bitwise_operators = true 224 | ij_java_spaces_around_equality_operators = true 225 | ij_java_spaces_around_lambda_arrow = true 226 | ij_java_spaces_around_logical_operators = true 227 | ij_java_spaces_around_method_ref_dbl_colon = false 228 | ij_java_spaces_around_multiplicative_operators = true 229 | ij_java_spaces_around_relational_operators = true 230 | ij_java_spaces_around_shift_operators = true 231 | ij_java_spaces_around_type_bounds_in_type_parameters = true 232 | ij_java_spaces_around_unary_operator = false 233 | ij_java_spaces_within_angle_brackets = false 234 | ij_java_spaces_within_annotation_parentheses = false 235 | ij_java_spaces_within_array_initializer_braces = false 236 | ij_java_spaces_within_braces = false 237 | ij_java_spaces_within_brackets = false 238 | ij_java_spaces_within_cast_parentheses = false 239 | ij_java_spaces_within_catch_parentheses = false 240 | ij_java_spaces_within_for_parentheses = false 241 | ij_java_spaces_within_if_parentheses = false 242 | ij_java_spaces_within_method_call_parentheses = false 243 | ij_java_spaces_within_method_parentheses = false 244 | ij_java_spaces_within_parentheses = false 245 | ij_java_spaces_within_record_header = false 246 | ij_java_spaces_within_switch_parentheses = false 247 | ij_java_spaces_within_synchronized_parentheses = false 248 | ij_java_spaces_within_try_parentheses = false 249 | ij_java_spaces_within_while_parentheses = false 250 | ij_java_special_else_if_treatment = true 251 | ij_java_subclass_name_suffix = Impl 252 | ij_java_ternary_operation_signs_on_next_line = false 253 | ij_java_ternary_operation_wrap = off 254 | ij_java_test_name_suffix = Test 255 | ij_java_throws_keyword_wrap = off 256 | ij_java_throws_list_wrap = off 257 | ij_java_use_external_annotations = false 258 | ij_java_use_fq_class_names = false 259 | ij_java_use_relative_indents = false 260 | ij_java_use_single_class_imports = true 261 | ij_java_variable_annotation_wrap = off 262 | ij_java_visibility = public 263 | ij_java_while_brace_force = never 264 | ij_java_while_on_new_line = false 265 | ij_java_wrap_comments = false 266 | ij_java_wrap_first_method_in_call_chain = false 267 | ij_java_wrap_long_lines = false 268 | 269 | [*.nbtt] 270 | max_line_length = 150 271 | ij_continuation_indent_size = 4 272 | ij_nbtt_keep_indents_on_empty_lines = false 273 | ij_nbtt_space_after_colon = true 274 | ij_nbtt_space_after_comma = true 275 | ij_nbtt_space_before_colon = true 276 | ij_nbtt_space_before_comma = false 277 | ij_nbtt_spaces_within_brackets = false 278 | ij_nbtt_spaces_within_parentheses = false 279 | 280 | [*.properties] 281 | ij_properties_align_group_field_declarations = false 282 | ij_properties_keep_blank_lines = false 283 | ij_properties_key_value_delimiter = equals 284 | ij_properties_spaces_around_key_value_delimiter = false 285 | 286 | [*.sass] 287 | indent_size = 2 288 | ij_sass_align_closing_brace_with_properties = false 289 | ij_sass_blank_lines_around_nested_selector = 1 290 | ij_sass_blank_lines_between_blocks = 1 291 | ij_sass_brace_placement = 0 292 | ij_sass_enforce_quotes_on_format = false 293 | ij_sass_hex_color_long_format = false 294 | ij_sass_hex_color_lower_case = false 295 | ij_sass_hex_color_short_format = false 296 | ij_sass_hex_color_upper_case = false 297 | ij_sass_keep_blank_lines_in_code = 2 298 | ij_sass_keep_indents_on_empty_lines = false 299 | ij_sass_keep_single_line_blocks = false 300 | ij_sass_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow 301 | ij_sass_space_after_colon = true 302 | ij_sass_space_before_opening_brace = true 303 | ij_sass_use_double_quotes = true 304 | ij_sass_value_alignment = 0 305 | 306 | [*.scss] 307 | indent_size = 2 308 | ij_scss_align_closing_brace_with_properties = false 309 | ij_scss_blank_lines_around_nested_selector = 1 310 | ij_scss_blank_lines_between_blocks = 1 311 | ij_scss_brace_placement = 0 312 | ij_scss_enforce_quotes_on_format = false 313 | ij_scss_hex_color_long_format = false 314 | ij_scss_hex_color_lower_case = false 315 | ij_scss_hex_color_short_format = false 316 | ij_scss_hex_color_upper_case = false 317 | ij_scss_keep_blank_lines_in_code = 2 318 | ij_scss_keep_indents_on_empty_lines = false 319 | ij_scss_keep_single_line_blocks = false 320 | ij_scss_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow 321 | ij_scss_space_after_colon = true 322 | ij_scss_space_before_opening_brace = true 323 | ij_scss_use_double_quotes = true 324 | ij_scss_value_alignment = 0 325 | 326 | [*.styl] 327 | indent_size = 2 328 | ij_stylus_align_closing_brace_with_properties = false 329 | ij_stylus_blank_lines_around_nested_selector = 1 330 | ij_stylus_blank_lines_between_blocks = 1 331 | ij_stylus_brace_placement = 0 332 | ij_stylus_enforce_quotes_on_format = false 333 | ij_stylus_hex_color_long_format = false 334 | ij_stylus_hex_color_lower_case = false 335 | ij_stylus_hex_color_short_format = false 336 | ij_stylus_hex_color_upper_case = false 337 | ij_stylus_keep_blank_lines_in_code = 2 338 | ij_stylus_keep_indents_on_empty_lines = false 339 | ij_stylus_keep_single_line_blocks = false 340 | ij_stylus_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow 341 | ij_stylus_space_after_colon = true 342 | ij_stylus_space_before_opening_brace = true 343 | ij_stylus_use_double_quotes = true 344 | ij_stylus_value_alignment = 0 345 | 346 | [.editorconfig] 347 | ij_editorconfig_align_group_field_declarations = false 348 | ij_editorconfig_space_after_colon = false 349 | ij_editorconfig_space_after_comma = true 350 | ij_editorconfig_space_before_colon = false 351 | ij_editorconfig_space_before_comma = false 352 | ij_editorconfig_spaces_around_assignment_operators = true 353 | 354 | [{*.ant, *.fxml, *.jhm, *.jnlp, *.jrxml, *.pom, *.rng, *.tld, *.wsdl, *.xml, *.xsd, *.xsl, *.xslt, *.xul}] 355 | ij_xml_align_attributes = true 356 | ij_xml_align_text = false 357 | ij_xml_attribute_wrap = normal 358 | ij_xml_block_comment_at_first_column = true 359 | ij_xml_keep_blank_lines = 2 360 | ij_xml_keep_indents_on_empty_lines = false 361 | ij_xml_keep_line_breaks = true 362 | ij_xml_keep_line_breaks_in_text = true 363 | ij_xml_keep_whitespaces = false 364 | ij_xml_keep_whitespaces_around_cdata = preserve 365 | ij_xml_keep_whitespaces_inside_cdata = false 366 | ij_xml_line_comment_at_first_column = true 367 | ij_xml_space_after_tag_name = false 368 | ij_xml_space_around_equals_in_attribute = false 369 | ij_xml_space_inside_empty_tag = false 370 | ij_xml_text_wrap = normal 371 | 372 | [{*.ats, *.ts}] 373 | ij_continuation_indent_size = 4 374 | ij_typescript_align_imports = false 375 | ij_typescript_align_multiline_array_initializer_expression = false 376 | ij_typescript_align_multiline_binary_operation = false 377 | ij_typescript_align_multiline_chained_methods = false 378 | ij_typescript_align_multiline_extends_list = false 379 | ij_typescript_align_multiline_for = true 380 | ij_typescript_align_multiline_parameters = true 381 | ij_typescript_align_multiline_parameters_in_calls = false 382 | ij_typescript_align_multiline_ternary_operation = false 383 | ij_typescript_align_object_properties = 0 384 | ij_typescript_align_union_types = false 385 | ij_typescript_align_var_statements = 0 386 | ij_typescript_array_initializer_new_line_after_left_brace = false 387 | ij_typescript_array_initializer_right_brace_on_new_line = false 388 | ij_typescript_array_initializer_wrap = off 389 | ij_typescript_assignment_wrap = off 390 | ij_typescript_binary_operation_sign_on_next_line = false 391 | ij_typescript_binary_operation_wrap = off 392 | ij_typescript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/** 393 | ij_typescript_blank_lines_after_imports = 1 394 | ij_typescript_blank_lines_around_class = 1 395 | ij_typescript_blank_lines_around_field = 0 396 | ij_typescript_blank_lines_around_field_in_interface = 0 397 | ij_typescript_blank_lines_around_function = 1 398 | ij_typescript_blank_lines_around_method = 1 399 | ij_typescript_blank_lines_around_method_in_interface = 1 400 | ij_typescript_block_brace_style = end_of_line 401 | ij_typescript_call_parameters_new_line_after_left_paren = false 402 | ij_typescript_call_parameters_right_paren_on_new_line = false 403 | ij_typescript_call_parameters_wrap = off 404 | ij_typescript_catch_on_new_line = false 405 | ij_typescript_chained_call_dot_on_new_line = true 406 | ij_typescript_class_brace_style = end_of_line 407 | ij_typescript_comma_on_new_line = false 408 | ij_typescript_do_while_brace_force = never 409 | ij_typescript_else_on_new_line = false 410 | ij_typescript_enforce_trailing_comma = keep 411 | ij_typescript_extends_keyword_wrap = off 412 | ij_typescript_extends_list_wrap = off 413 | ij_typescript_field_prefix = _ 414 | ij_typescript_file_name_style = relaxed 415 | ij_typescript_finally_on_new_line = false 416 | ij_typescript_for_brace_force = never 417 | ij_typescript_for_statement_new_line_after_left_paren = false 418 | ij_typescript_for_statement_right_paren_on_new_line = false 419 | ij_typescript_for_statement_wrap = off 420 | ij_typescript_force_quote_style = false 421 | ij_typescript_force_semicolon_style = false 422 | ij_typescript_function_expression_brace_style = end_of_line 423 | ij_typescript_if_brace_force = never 424 | ij_typescript_import_merge_members = global 425 | ij_typescript_import_prefer_absolute_path = global 426 | ij_typescript_import_sort_members = true 427 | ij_typescript_import_sort_module_name = false 428 | ij_typescript_import_use_node_resolution = true 429 | ij_typescript_imports_wrap = on_every_item 430 | ij_typescript_indent_case_from_switch = true 431 | ij_typescript_indent_chained_calls = true 432 | ij_typescript_indent_package_children = 0 433 | ij_typescript_jsdoc_include_types = false 434 | ij_typescript_jsx_attribute_value = braces 435 | ij_typescript_keep_blank_lines_in_code = 2 436 | ij_typescript_keep_first_column_comment = true 437 | ij_typescript_keep_indents_on_empty_lines = false 438 | ij_typescript_keep_line_breaks = true 439 | ij_typescript_keep_simple_blocks_in_one_line = false 440 | ij_typescript_keep_simple_methods_in_one_line = false 441 | ij_typescript_line_comment_add_space = true 442 | ij_typescript_line_comment_at_first_column = false 443 | ij_typescript_method_brace_style = end_of_line 444 | ij_typescript_method_call_chain_wrap = off 445 | ij_typescript_method_parameters_new_line_after_left_paren = false 446 | ij_typescript_method_parameters_right_paren_on_new_line = false 447 | ij_typescript_method_parameters_wrap = off 448 | ij_typescript_object_literal_wrap = on_every_item 449 | ij_typescript_parentheses_expression_new_line_after_left_paren = false 450 | ij_typescript_parentheses_expression_right_paren_on_new_line = false 451 | ij_typescript_place_assignment_sign_on_next_line = false 452 | ij_typescript_prefer_as_type_cast = false 453 | ij_typescript_prefer_explicit_types_function_expression_returns = false 454 | ij_typescript_prefer_explicit_types_function_returns = false 455 | ij_typescript_prefer_explicit_types_vars_fields = false 456 | ij_typescript_prefer_parameters_wrap = false 457 | ij_typescript_reformat_c_style_comments = false 458 | ij_typescript_space_after_colon = true 459 | ij_typescript_space_after_comma = true 460 | ij_typescript_space_after_dots_in_rest_parameter = false 461 | ij_typescript_space_after_generator_mult = true 462 | ij_typescript_space_after_property_colon = true 463 | ij_typescript_space_after_quest = true 464 | ij_typescript_space_after_type_colon = true 465 | ij_typescript_space_after_unary_not = false 466 | ij_typescript_space_before_async_arrow_lparen = true 467 | ij_typescript_space_before_catch_keyword = true 468 | ij_typescript_space_before_catch_left_brace = true 469 | ij_typescript_space_before_catch_parentheses = true 470 | ij_typescript_space_before_class_lbrace = true 471 | ij_typescript_space_before_class_left_brace = true 472 | ij_typescript_space_before_colon = true 473 | ij_typescript_space_before_comma = false 474 | ij_typescript_space_before_do_left_brace = true 475 | ij_typescript_space_before_else_keyword = true 476 | ij_typescript_space_before_else_left_brace = true 477 | ij_typescript_space_before_finally_keyword = true 478 | ij_typescript_space_before_finally_left_brace = true 479 | ij_typescript_space_before_for_left_brace = true 480 | ij_typescript_space_before_for_parentheses = true 481 | ij_typescript_space_before_for_semicolon = false 482 | ij_typescript_space_before_function_left_parenth = true 483 | ij_typescript_space_before_generator_mult = false 484 | ij_typescript_space_before_if_left_brace = true 485 | ij_typescript_space_before_if_parentheses = true 486 | ij_typescript_space_before_method_call_parentheses = false 487 | ij_typescript_space_before_method_left_brace = true 488 | ij_typescript_space_before_method_parentheses = false 489 | ij_typescript_space_before_property_colon = false 490 | ij_typescript_space_before_quest = true 491 | ij_typescript_space_before_switch_left_brace = true 492 | ij_typescript_space_before_switch_parentheses = true 493 | ij_typescript_space_before_try_left_brace = true 494 | ij_typescript_space_before_type_colon = false 495 | ij_typescript_space_before_unary_not = false 496 | ij_typescript_space_before_while_keyword = true 497 | ij_typescript_space_before_while_left_brace = true 498 | ij_typescript_space_before_while_parentheses = true 499 | ij_typescript_spaces_around_additive_operators = true 500 | ij_typescript_spaces_around_arrow_function_operator = true 501 | ij_typescript_spaces_around_assignment_operators = true 502 | ij_typescript_spaces_around_bitwise_operators = true 503 | ij_typescript_spaces_around_equality_operators = true 504 | ij_typescript_spaces_around_logical_operators = true 505 | ij_typescript_spaces_around_multiplicative_operators = true 506 | ij_typescript_spaces_around_relational_operators = true 507 | ij_typescript_spaces_around_shift_operators = true 508 | ij_typescript_spaces_around_unary_operator = false 509 | ij_typescript_spaces_within_array_initializer_brackets = false 510 | ij_typescript_spaces_within_brackets = false 511 | ij_typescript_spaces_within_catch_parentheses = false 512 | ij_typescript_spaces_within_for_parentheses = false 513 | ij_typescript_spaces_within_if_parentheses = false 514 | ij_typescript_spaces_within_imports = false 515 | ij_typescript_spaces_within_interpolation_expressions = false 516 | ij_typescript_spaces_within_method_call_parentheses = false 517 | ij_typescript_spaces_within_method_parentheses = false 518 | ij_typescript_spaces_within_object_literal_braces = false 519 | ij_typescript_spaces_within_object_type_braces = true 520 | ij_typescript_spaces_within_parentheses = false 521 | ij_typescript_spaces_within_switch_parentheses = false 522 | ij_typescript_spaces_within_type_assertion = false 523 | ij_typescript_spaces_within_union_types = true 524 | ij_typescript_spaces_within_while_parentheses = false 525 | ij_typescript_special_else_if_treatment = true 526 | ij_typescript_ternary_operation_signs_on_next_line = false 527 | ij_typescript_ternary_operation_wrap = off 528 | ij_typescript_union_types_wrap = on_every_item 529 | ij_typescript_use_chained_calls_group_indents = false 530 | ij_typescript_use_double_quotes = true 531 | ij_typescript_use_explicit_js_extension = global 532 | ij_typescript_use_path_mapping = always 533 | ij_typescript_use_public_modifier = false 534 | ij_typescript_use_semicolon_after_statement = true 535 | ij_typescript_var_declaration_wrap = normal 536 | ij_typescript_while_brace_force = never 537 | ij_typescript_while_on_new_line = false 538 | ij_typescript_wrap_comments = false 539 | 540 | [{*.bash, *.sh, *.zsh}] 541 | indent_size = 2 542 | tab_width = 2 543 | ij_shell_binary_ops_start_line = false 544 | ij_shell_keep_column_alignment_padding = false 545 | ij_shell_minify_program = false 546 | ij_shell_redirect_followed_by_space = false 547 | ij_shell_switch_cases_indented = false 548 | 549 | [{*.cjs, *.js}] 550 | ij_continuation_indent_size = 4 551 | ij_javascript_align_imports = false 552 | ij_javascript_align_multiline_array_initializer_expression = false 553 | ij_javascript_align_multiline_binary_operation = false 554 | ij_javascript_align_multiline_chained_methods = false 555 | ij_javascript_align_multiline_extends_list = false 556 | ij_javascript_align_multiline_for = true 557 | ij_javascript_align_multiline_parameters = true 558 | ij_javascript_align_multiline_parameters_in_calls = false 559 | ij_javascript_align_multiline_ternary_operation = false 560 | ij_javascript_align_object_properties = 0 561 | ij_javascript_align_union_types = false 562 | ij_javascript_align_var_statements = 0 563 | ij_javascript_array_initializer_new_line_after_left_brace = false 564 | ij_javascript_array_initializer_right_brace_on_new_line = false 565 | ij_javascript_array_initializer_wrap = off 566 | ij_javascript_assignment_wrap = off 567 | ij_javascript_binary_operation_sign_on_next_line = false 568 | ij_javascript_binary_operation_wrap = off 569 | ij_javascript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/** 570 | ij_javascript_blank_lines_after_imports = 1 571 | ij_javascript_blank_lines_around_class = 1 572 | ij_javascript_blank_lines_around_field = 0 573 | ij_javascript_blank_lines_around_function = 1 574 | ij_javascript_blank_lines_around_method = 1 575 | ij_javascript_block_brace_style = end_of_line 576 | ij_javascript_call_parameters_new_line_after_left_paren = false 577 | ij_javascript_call_parameters_right_paren_on_new_line = false 578 | ij_javascript_call_parameters_wrap = off 579 | ij_javascript_catch_on_new_line = false 580 | ij_javascript_chained_call_dot_on_new_line = true 581 | ij_javascript_class_brace_style = end_of_line 582 | ij_javascript_comma_on_new_line = false 583 | ij_javascript_do_while_brace_force = never 584 | ij_javascript_else_on_new_line = false 585 | ij_javascript_enforce_trailing_comma = keep 586 | ij_javascript_extends_keyword_wrap = off 587 | ij_javascript_extends_list_wrap = off 588 | ij_javascript_field_prefix = _ 589 | ij_javascript_file_name_style = relaxed 590 | ij_javascript_finally_on_new_line = false 591 | ij_javascript_for_brace_force = never 592 | ij_javascript_for_statement_new_line_after_left_paren = false 593 | ij_javascript_for_statement_right_paren_on_new_line = false 594 | ij_javascript_for_statement_wrap = off 595 | ij_javascript_force_quote_style = false 596 | ij_javascript_force_semicolon_style = false 597 | ij_javascript_function_expression_brace_style = end_of_line 598 | ij_javascript_if_brace_force = never 599 | ij_javascript_import_merge_members = global 600 | ij_javascript_import_prefer_absolute_path = global 601 | ij_javascript_import_sort_members = true 602 | ij_javascript_import_sort_module_name = false 603 | ij_javascript_import_use_node_resolution = true 604 | ij_javascript_imports_wrap = on_every_item 605 | ij_javascript_indent_case_from_switch = true 606 | ij_javascript_indent_chained_calls = true 607 | ij_javascript_indent_package_children = 0 608 | ij_javascript_jsx_attribute_value = braces 609 | ij_javascript_keep_blank_lines_in_code = 2 610 | ij_javascript_keep_first_column_comment = true 611 | ij_javascript_keep_indents_on_empty_lines = false 612 | ij_javascript_keep_line_breaks = true 613 | ij_javascript_keep_simple_blocks_in_one_line = false 614 | ij_javascript_keep_simple_methods_in_one_line = false 615 | ij_javascript_line_comment_add_space = true 616 | ij_javascript_line_comment_at_first_column = false 617 | ij_javascript_method_brace_style = end_of_line 618 | ij_javascript_method_call_chain_wrap = off 619 | ij_javascript_method_parameters_new_line_after_left_paren = false 620 | ij_javascript_method_parameters_right_paren_on_new_line = false 621 | ij_javascript_method_parameters_wrap = off 622 | ij_javascript_object_literal_wrap = on_every_item 623 | ij_javascript_parentheses_expression_new_line_after_left_paren = false 624 | ij_javascript_parentheses_expression_right_paren_on_new_line = false 625 | ij_javascript_place_assignment_sign_on_next_line = false 626 | ij_javascript_prefer_as_type_cast = false 627 | ij_javascript_prefer_explicit_types_function_expression_returns = false 628 | ij_javascript_prefer_explicit_types_function_returns = false 629 | ij_javascript_prefer_explicit_types_vars_fields = false 630 | ij_javascript_prefer_parameters_wrap = false 631 | ij_javascript_reformat_c_style_comments = false 632 | ij_javascript_space_after_colon = true 633 | ij_javascript_space_after_comma = true 634 | ij_javascript_space_after_dots_in_rest_parameter = false 635 | ij_javascript_space_after_generator_mult = true 636 | ij_javascript_space_after_property_colon = true 637 | ij_javascript_space_after_quest = true 638 | ij_javascript_space_after_type_colon = true 639 | ij_javascript_space_after_unary_not = false 640 | ij_javascript_space_before_async_arrow_lparen = true 641 | ij_javascript_space_before_catch_keyword = true 642 | ij_javascript_space_before_catch_left_brace = true 643 | ij_javascript_space_before_catch_parentheses = true 644 | ij_javascript_space_before_class_lbrace = true 645 | ij_javascript_space_before_class_left_brace = true 646 | ij_javascript_space_before_colon = true 647 | ij_javascript_space_before_comma = false 648 | ij_javascript_space_before_do_left_brace = true 649 | ij_javascript_space_before_else_keyword = true 650 | ij_javascript_space_before_else_left_brace = true 651 | ij_javascript_space_before_finally_keyword = true 652 | ij_javascript_space_before_finally_left_brace = true 653 | ij_javascript_space_before_for_left_brace = true 654 | ij_javascript_space_before_for_parentheses = true 655 | ij_javascript_space_before_for_semicolon = false 656 | ij_javascript_space_before_function_left_parenth = true 657 | ij_javascript_space_before_generator_mult = false 658 | ij_javascript_space_before_if_left_brace = true 659 | ij_javascript_space_before_if_parentheses = true 660 | ij_javascript_space_before_method_call_parentheses = false 661 | ij_javascript_space_before_method_left_brace = true 662 | ij_javascript_space_before_method_parentheses = false 663 | ij_javascript_space_before_property_colon = false 664 | ij_javascript_space_before_quest = true 665 | ij_javascript_space_before_switch_left_brace = true 666 | ij_javascript_space_before_switch_parentheses = true 667 | ij_javascript_space_before_try_left_brace = true 668 | ij_javascript_space_before_type_colon = false 669 | ij_javascript_space_before_unary_not = false 670 | ij_javascript_space_before_while_keyword = true 671 | ij_javascript_space_before_while_left_brace = true 672 | ij_javascript_space_before_while_parentheses = true 673 | ij_javascript_spaces_around_additive_operators = true 674 | ij_javascript_spaces_around_arrow_function_operator = true 675 | ij_javascript_spaces_around_assignment_operators = true 676 | ij_javascript_spaces_around_bitwise_operators = true 677 | ij_javascript_spaces_around_equality_operators = true 678 | ij_javascript_spaces_around_logical_operators = true 679 | ij_javascript_spaces_around_multiplicative_operators = true 680 | ij_javascript_spaces_around_relational_operators = true 681 | ij_javascript_spaces_around_shift_operators = true 682 | ij_javascript_spaces_around_unary_operator = false 683 | ij_javascript_spaces_within_array_initializer_brackets = false 684 | ij_javascript_spaces_within_brackets = false 685 | ij_javascript_spaces_within_catch_parentheses = false 686 | ij_javascript_spaces_within_for_parentheses = false 687 | ij_javascript_spaces_within_if_parentheses = false 688 | ij_javascript_spaces_within_imports = false 689 | ij_javascript_spaces_within_interpolation_expressions = false 690 | ij_javascript_spaces_within_method_call_parentheses = false 691 | ij_javascript_spaces_within_method_parentheses = false 692 | ij_javascript_spaces_within_object_literal_braces = false 693 | ij_javascript_spaces_within_object_type_braces = true 694 | ij_javascript_spaces_within_parentheses = false 695 | ij_javascript_spaces_within_switch_parentheses = false 696 | ij_javascript_spaces_within_type_assertion = false 697 | ij_javascript_spaces_within_union_types = true 698 | ij_javascript_spaces_within_while_parentheses = false 699 | ij_javascript_special_else_if_treatment = true 700 | ij_javascript_ternary_operation_signs_on_next_line = false 701 | ij_javascript_ternary_operation_wrap = off 702 | ij_javascript_union_types_wrap = on_every_item 703 | ij_javascript_use_chained_calls_group_indents = false 704 | ij_javascript_use_double_quotes = true 705 | ij_javascript_use_explicit_js_extension = global 706 | ij_javascript_use_path_mapping = always 707 | ij_javascript_use_public_modifier = false 708 | ij_javascript_use_semicolon_after_statement = true 709 | ij_javascript_var_declaration_wrap = normal 710 | ij_javascript_while_brace_force = never 711 | ij_javascript_while_on_new_line = false 712 | ij_javascript_wrap_comments = false 713 | 714 | [{*.comp, *.frag, *.fsh, *.geom, *.glsl, *.shader, *.tesc, *.tese, *.vert, *.vsh}] 715 | ij_glsl_keep_indents_on_empty_lines = false 716 | 717 | [{*.gant, *.gradle, *.groovy, *.gy}] 718 | ij_groovy_align_group_field_declarations = false 719 | ij_groovy_align_multiline_array_initializer_expression = false 720 | ij_groovy_align_multiline_assignment = false 721 | ij_groovy_align_multiline_binary_operation = false 722 | ij_groovy_align_multiline_chained_methods = false 723 | ij_groovy_align_multiline_extends_list = false 724 | ij_groovy_align_multiline_for = true 725 | ij_groovy_align_multiline_list_or_map = true 726 | ij_groovy_align_multiline_method_parentheses = false 727 | ij_groovy_align_multiline_parameters = true 728 | ij_groovy_align_multiline_parameters_in_calls = false 729 | ij_groovy_align_multiline_resources = true 730 | ij_groovy_align_multiline_ternary_operation = false 731 | ij_groovy_align_multiline_throws_list = false 732 | ij_groovy_align_named_args_in_map = true 733 | ij_groovy_align_throws_keyword = false 734 | ij_groovy_array_initializer_new_line_after_left_brace = false 735 | ij_groovy_array_initializer_right_brace_on_new_line = false 736 | ij_groovy_array_initializer_wrap = off 737 | ij_groovy_assert_statement_wrap = off 738 | ij_groovy_assignment_wrap = off 739 | ij_groovy_binary_operation_wrap = off 740 | ij_groovy_blank_lines_after_class_header = 0 741 | ij_groovy_blank_lines_after_imports = 1 742 | ij_groovy_blank_lines_after_package = 1 743 | ij_groovy_blank_lines_around_class = 1 744 | ij_groovy_blank_lines_around_field = 0 745 | ij_groovy_blank_lines_around_field_in_interface = 0 746 | ij_groovy_blank_lines_around_method = 1 747 | ij_groovy_blank_lines_around_method_in_interface = 1 748 | ij_groovy_blank_lines_before_imports = 1 749 | ij_groovy_blank_lines_before_method_body = 0 750 | ij_groovy_blank_lines_before_package = 0 751 | ij_groovy_block_brace_style = end_of_line 752 | ij_groovy_block_comment_at_first_column = true 753 | ij_groovy_call_parameters_new_line_after_left_paren = false 754 | ij_groovy_call_parameters_right_paren_on_new_line = false 755 | ij_groovy_call_parameters_wrap = off 756 | ij_groovy_catch_on_new_line = false 757 | ij_groovy_class_annotation_wrap = split_into_lines 758 | ij_groovy_class_brace_style = end_of_line 759 | ij_groovy_class_count_to_use_import_on_demand = 5 760 | ij_groovy_do_while_brace_force = never 761 | ij_groovy_else_on_new_line = false 762 | ij_groovy_enum_constants_wrap = off 763 | ij_groovy_extends_keyword_wrap = off 764 | ij_groovy_extends_list_wrap = off 765 | ij_groovy_field_annotation_wrap = split_into_lines 766 | ij_groovy_finally_on_new_line = false 767 | ij_groovy_for_brace_force = never 768 | ij_groovy_for_statement_new_line_after_left_paren = false 769 | ij_groovy_for_statement_right_paren_on_new_line = false 770 | ij_groovy_for_statement_wrap = off 771 | ij_groovy_if_brace_force = never 772 | ij_groovy_import_annotation_wrap = 2 773 | ij_groovy_imports_layout = *, |, javax.**, java.**, |, $* 774 | ij_groovy_indent_case_from_switch = true 775 | ij_groovy_indent_label_blocks = true 776 | ij_groovy_insert_inner_class_imports = false 777 | ij_groovy_keep_blank_lines_before_right_brace = 2 778 | ij_groovy_keep_blank_lines_in_code = 2 779 | ij_groovy_keep_blank_lines_in_declarations = 2 780 | ij_groovy_keep_control_statement_in_one_line = true 781 | ij_groovy_keep_first_column_comment = true 782 | ij_groovy_keep_indents_on_empty_lines = false 783 | ij_groovy_keep_line_breaks = true 784 | ij_groovy_keep_multiple_expressions_in_one_line = false 785 | ij_groovy_keep_simple_blocks_in_one_line = false 786 | ij_groovy_keep_simple_classes_in_one_line = true 787 | ij_groovy_keep_simple_lambdas_in_one_line = true 788 | ij_groovy_keep_simple_methods_in_one_line = true 789 | ij_groovy_label_indent_absolute = false 790 | ij_groovy_label_indent_size = 0 791 | ij_groovy_lambda_brace_style = end_of_line 792 | ij_groovy_layout_static_imports_separately = true 793 | ij_groovy_line_comment_add_space = false 794 | ij_groovy_line_comment_at_first_column = true 795 | ij_groovy_method_annotation_wrap = split_into_lines 796 | ij_groovy_method_brace_style = end_of_line 797 | ij_groovy_method_call_chain_wrap = off 798 | ij_groovy_method_parameters_new_line_after_left_paren = false 799 | ij_groovy_method_parameters_right_paren_on_new_line = false 800 | ij_groovy_method_parameters_wrap = off 801 | ij_groovy_modifier_list_wrap = false 802 | ij_groovy_names_count_to_use_import_on_demand = 3 803 | ij_groovy_parameter_annotation_wrap = off 804 | ij_groovy_parentheses_expression_new_line_after_left_paren = false 805 | ij_groovy_parentheses_expression_right_paren_on_new_line = false 806 | ij_groovy_prefer_parameters_wrap = false 807 | ij_groovy_resource_list_new_line_after_left_paren = false 808 | ij_groovy_resource_list_right_paren_on_new_line = false 809 | ij_groovy_resource_list_wrap = off 810 | ij_groovy_space_after_assert_separator = true 811 | ij_groovy_space_after_colon = true 812 | ij_groovy_space_after_comma = true 813 | ij_groovy_space_after_comma_in_type_arguments = true 814 | ij_groovy_space_after_for_semicolon = true 815 | ij_groovy_space_after_quest = true 816 | ij_groovy_space_after_type_cast = true 817 | ij_groovy_space_before_annotation_parameter_list = false 818 | ij_groovy_space_before_array_initializer_left_brace = false 819 | ij_groovy_space_before_assert_separator = false 820 | ij_groovy_space_before_catch_keyword = true 821 | ij_groovy_space_before_catch_left_brace = true 822 | ij_groovy_space_before_catch_parentheses = true 823 | ij_groovy_space_before_class_left_brace = true 824 | ij_groovy_space_before_closure_left_brace = true 825 | ij_groovy_space_before_colon = true 826 | ij_groovy_space_before_comma = false 827 | ij_groovy_space_before_do_left_brace = true 828 | ij_groovy_space_before_else_keyword = true 829 | ij_groovy_space_before_else_left_brace = true 830 | ij_groovy_space_before_finally_keyword = true 831 | ij_groovy_space_before_finally_left_brace = true 832 | ij_groovy_space_before_for_left_brace = true 833 | ij_groovy_space_before_for_parentheses = true 834 | ij_groovy_space_before_for_semicolon = false 835 | ij_groovy_space_before_if_left_brace = true 836 | ij_groovy_space_before_if_parentheses = true 837 | ij_groovy_space_before_method_call_parentheses = false 838 | ij_groovy_space_before_method_left_brace = true 839 | ij_groovy_space_before_method_parentheses = false 840 | ij_groovy_space_before_quest = true 841 | ij_groovy_space_before_switch_left_brace = true 842 | ij_groovy_space_before_switch_parentheses = true 843 | ij_groovy_space_before_synchronized_left_brace = true 844 | ij_groovy_space_before_synchronized_parentheses = true 845 | ij_groovy_space_before_try_left_brace = true 846 | ij_groovy_space_before_try_parentheses = true 847 | ij_groovy_space_before_while_keyword = true 848 | ij_groovy_space_before_while_left_brace = true 849 | ij_groovy_space_before_while_parentheses = true 850 | ij_groovy_space_in_named_argument = true 851 | ij_groovy_space_in_named_argument_before_colon = false 852 | ij_groovy_space_within_empty_array_initializer_braces = false 853 | ij_groovy_space_within_empty_method_call_parentheses = false 854 | ij_groovy_spaces_around_additive_operators = true 855 | ij_groovy_spaces_around_assignment_operators = true 856 | ij_groovy_spaces_around_bitwise_operators = true 857 | ij_groovy_spaces_around_equality_operators = true 858 | ij_groovy_spaces_around_lambda_arrow = true 859 | ij_groovy_spaces_around_logical_operators = true 860 | ij_groovy_spaces_around_multiplicative_operators = true 861 | ij_groovy_spaces_around_regex_operators = true 862 | ij_groovy_spaces_around_relational_operators = true 863 | ij_groovy_spaces_around_shift_operators = true 864 | ij_groovy_spaces_within_annotation_parentheses = false 865 | ij_groovy_spaces_within_array_initializer_braces = false 866 | ij_groovy_spaces_within_braces = true 867 | ij_groovy_spaces_within_brackets = false 868 | ij_groovy_spaces_within_cast_parentheses = false 869 | ij_groovy_spaces_within_catch_parentheses = false 870 | ij_groovy_spaces_within_for_parentheses = false 871 | ij_groovy_spaces_within_gstring_injection_braces = false 872 | ij_groovy_spaces_within_if_parentheses = false 873 | ij_groovy_spaces_within_list_or_map = false 874 | ij_groovy_spaces_within_method_call_parentheses = false 875 | ij_groovy_spaces_within_method_parentheses = false 876 | ij_groovy_spaces_within_parentheses = false 877 | ij_groovy_spaces_within_switch_parentheses = false 878 | ij_groovy_spaces_within_synchronized_parentheses = false 879 | ij_groovy_spaces_within_try_parentheses = false 880 | ij_groovy_spaces_within_tuple_expression = false 881 | ij_groovy_spaces_within_while_parentheses = false 882 | ij_groovy_special_else_if_treatment = true 883 | ij_groovy_ternary_operation_wrap = off 884 | ij_groovy_throws_keyword_wrap = off 885 | ij_groovy_throws_list_wrap = off 886 | ij_groovy_use_flying_geese_braces = false 887 | ij_groovy_use_fq_class_names = false 888 | ij_groovy_use_fq_class_names_in_javadoc = true 889 | ij_groovy_use_relative_indents = false 890 | ij_groovy_use_single_class_imports = true 891 | ij_groovy_variable_annotation_wrap = off 892 | ij_groovy_while_brace_force = never 893 | ij_groovy_while_on_new_line = false 894 | ij_groovy_wrap_long_lines = false 895 | 896 | [{*.gradle.kts, *.kt, *.kts, *.main.kts}] 897 | ij_continuation_indent_size = 4 898 | ij_kotlin_align_in_columns_case_branch = false 899 | ij_kotlin_align_multiline_binary_operation = false 900 | ij_kotlin_align_multiline_extends_list = false 901 | ij_kotlin_align_multiline_method_parentheses = false 902 | ij_kotlin_align_multiline_parameters = true 903 | ij_kotlin_align_multiline_parameters_in_calls = false 904 | ij_kotlin_allow_trailing_comma = false 905 | ij_kotlin_allow_trailing_comma_on_call_site = false 906 | ij_kotlin_assignment_wrap = off 907 | ij_kotlin_blank_lines_after_class_header = 0 908 | ij_kotlin_blank_lines_around_block_when_branches = 0 909 | ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1 910 | ij_kotlin_block_comment_at_first_column = true 911 | ij_kotlin_call_parameters_new_line_after_left_paren = false 912 | ij_kotlin_call_parameters_right_paren_on_new_line = false 913 | ij_kotlin_call_parameters_wrap = off 914 | ij_kotlin_catch_on_new_line = false 915 | ij_kotlin_class_annotation_wrap = split_into_lines 916 | ij_kotlin_continuation_indent_for_chained_calls = true 917 | ij_kotlin_continuation_indent_for_expression_bodies = true 918 | ij_kotlin_continuation_indent_in_argument_lists = true 919 | ij_kotlin_continuation_indent_in_elvis = true 920 | ij_kotlin_continuation_indent_in_if_conditions = true 921 | ij_kotlin_continuation_indent_in_parameter_lists = true 922 | ij_kotlin_continuation_indent_in_supertype_lists = true 923 | ij_kotlin_else_on_new_line = false 924 | ij_kotlin_enum_constants_wrap = off 925 | ij_kotlin_extends_list_wrap = off 926 | ij_kotlin_field_annotation_wrap = off 927 | ij_kotlin_finally_on_new_line = false 928 | ij_kotlin_if_rparen_on_new_line = false 929 | ij_kotlin_import_nested_classes = false 930 | ij_kotlin_imports_layout = *, java.**, javax.**, kotlin.**, ^ 931 | ij_kotlin_insert_whitespaces_in_simple_one_line_method = true 932 | ij_kotlin_keep_blank_lines_before_right_brace = 2 933 | ij_kotlin_keep_blank_lines_in_code = 2 934 | ij_kotlin_keep_blank_lines_in_declarations = 2 935 | ij_kotlin_keep_first_column_comment = true 936 | ij_kotlin_keep_indents_on_empty_lines = false 937 | ij_kotlin_keep_line_breaks = true 938 | ij_kotlin_lbrace_on_next_line = false 939 | ij_kotlin_line_comment_add_space = false 940 | ij_kotlin_line_comment_at_first_column = true 941 | ij_kotlin_method_annotation_wrap = off 942 | ij_kotlin_method_call_chain_wrap = off 943 | ij_kotlin_method_parameters_new_line_after_left_paren = false 944 | ij_kotlin_method_parameters_right_paren_on_new_line = false 945 | ij_kotlin_method_parameters_wrap = off 946 | ij_kotlin_name_count_to_use_star_import = 5 947 | ij_kotlin_name_count_to_use_star_import_for_members = 3 948 | ij_kotlin_packages_to_use_import_on_demand = java.util.*, kotlinx.android.synthetic.**, io.ktor.** 949 | ij_kotlin_parameter_annotation_wrap = off 950 | ij_kotlin_space_after_comma = true 951 | ij_kotlin_space_after_extend_colon = true 952 | ij_kotlin_space_after_type_colon = true 953 | ij_kotlin_space_before_catch_parentheses = true 954 | ij_kotlin_space_before_comma = false 955 | ij_kotlin_space_before_extend_colon = true 956 | ij_kotlin_space_before_for_parentheses = true 957 | ij_kotlin_space_before_if_parentheses = true 958 | ij_kotlin_space_before_lambda_arrow = true 959 | ij_kotlin_space_before_type_colon = false 960 | ij_kotlin_space_before_when_parentheses = true 961 | ij_kotlin_space_before_while_parentheses = true 962 | ij_kotlin_spaces_around_additive_operators = true 963 | ij_kotlin_spaces_around_assignment_operators = true 964 | ij_kotlin_spaces_around_equality_operators = true 965 | ij_kotlin_spaces_around_function_type_arrow = true 966 | ij_kotlin_spaces_around_logical_operators = true 967 | ij_kotlin_spaces_around_multiplicative_operators = true 968 | ij_kotlin_spaces_around_range = false 969 | ij_kotlin_spaces_around_relational_operators = true 970 | ij_kotlin_spaces_around_unary_operator = false 971 | ij_kotlin_spaces_around_when_arrow = true 972 | ij_kotlin_variable_annotation_wrap = off 973 | ij_kotlin_while_on_new_line = false 974 | ij_kotlin_wrap_elvis_expressions = 1 975 | ij_kotlin_wrap_expression_body_functions = 0 976 | ij_kotlin_wrap_first_method_in_call_chain = false 977 | 978 | [{*.har, *.jsb2, *.jsb3, *.json, .babelrc, .eslintrc, .stylelintrc, bowerrc, jest.config, mcmod.info}] 979 | indent_size = 2 980 | ij_json_keep_blank_lines_in_code = 0 981 | ij_json_keep_indents_on_empty_lines = false 982 | ij_json_keep_line_breaks = true 983 | ij_json_space_after_colon = true 984 | ij_json_space_after_comma = true 985 | ij_json_space_before_colon = true 986 | ij_json_space_before_comma = false 987 | ij_json_spaces_within_braces = false 988 | ij_json_spaces_within_brackets = false 989 | ij_json_wrap_long_lines = false 990 | 991 | [{*.htm, *.html, *.sht, *.shtm, *.shtml}] 992 | ij_html_add_new_line_before_tags = body, div, p, form, h1, h2, h3 993 | ij_html_align_attributes = true 994 | ij_html_align_text = false 995 | ij_html_attribute_wrap = normal 996 | ij_html_block_comment_at_first_column = true 997 | ij_html_do_not_align_children_of_min_lines = 0 998 | ij_html_do_not_break_if_inline_tags = title, h1, h2, h3, h4, h5, h6, p 999 | ij_html_do_not_indent_children_of_tags = html, body, thead, tbody, tfoot 1000 | ij_html_enforce_quotes = false 1001 | ij_html_inline_tags = a, abbr, acronym, b, basefont, bdo, big, br, cite, cite, code, dfn, em, font, i, img, input, kbd, label, q, s, samp, select, small, span, strike, strong, sub, sup, textarea, tt, u, var 1002 | ij_html_keep_blank_lines = 2 1003 | ij_html_keep_indents_on_empty_lines = false 1004 | ij_html_keep_line_breaks = true 1005 | ij_html_keep_line_breaks_in_text = true 1006 | ij_html_keep_whitespaces = false 1007 | ij_html_keep_whitespaces_inside = span, pre, textarea 1008 | ij_html_line_comment_at_first_column = true 1009 | ij_html_new_line_after_last_attribute = never 1010 | ij_html_new_line_before_first_attribute = never 1011 | ij_html_quote_style = double 1012 | ij_html_remove_new_line_before_tags = br 1013 | ij_html_space_after_tag_name = false 1014 | ij_html_space_around_equality_in_attribute = false 1015 | ij_html_space_inside_empty_tag = false 1016 | ij_html_text_wrap = normal 1017 | ij_html_uniform_ident = false 1018 | 1019 | [{*.markdown, *.md}] 1020 | ij_markdown_force_one_space_after_blockquote_symbol = true 1021 | ij_markdown_force_one_space_after_header_symbol = true 1022 | ij_markdown_force_one_space_after_list_bullet = true 1023 | ij_markdown_force_one_space_between_words = true 1024 | ij_markdown_keep_indents_on_empty_lines = false 1025 | ij_markdown_max_lines_around_block_elements = 1 1026 | ij_markdown_max_lines_around_header = 1 1027 | ij_markdown_max_lines_between_paragraphs = 1 1028 | ij_markdown_min_lines_around_block_elements = 1 1029 | ij_markdown_min_lines_around_header = 1 1030 | ij_markdown_min_lines_between_paragraphs = 1 1031 | 1032 | [{*.yaml, *.yml}] 1033 | indent_size = 2 1034 | ij_yaml_keep_indents_on_empty_lines = false 1035 | ij_yaml_keep_line_breaks = true 1036 | ij_yaml_space_before_colon = true 1037 | ij_yaml_spaces_within_braces = true 1038 | ij_yaml_spaces_within_brackets = true 1039 | -------------------------------------------------------------------------------- /.github/workflows/gradle_build.yml: -------------------------------------------------------------------------------- 1 | name: gradle_build 2 | 3 | on: 4 | push: 5 | pull_request: 6 | workflow_dispatch: 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Check out repository 13 | uses: actions/checkout@v2 14 | 15 | - name: Set up JDK 16 | uses: actions/setup-java@v1 17 | with: 18 | java-version: 1.8 19 | 20 | - name: Change wrapper permissions 21 | run: chmod +x ./gradlew 22 | 23 | - name: Gradle cache 24 | uses: actions/cache@v2 25 | with: 26 | path: | 27 | ~/.gradle/caches 28 | ~/.gradle/wrapper 29 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} 30 | restore-keys: | 31 | ${{ runner.os }}-gradle- 32 | 33 | - name: Gradle build 34 | run: ./gradlew --build-cache build 35 | 36 | - name: Archive artifact 37 | uses: actions/upload-artifact@v2 38 | with: 39 | name: artifact 40 | path: build/libs 41 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/linux,gradle,eclipse,windows,forgegradle,intellij+all,emacs,vim 2 | 3 | # Logs 4 | run/ 5 | scripts/jar-shrink/log.txt 6 | logs/ 7 | 8 | ### Eclipse ### 9 | .metadata 10 | bin/ 11 | tmp/ 12 | *.tmp 13 | *.bak 14 | *.swp 15 | *~.nib 16 | local.properties 17 | .settings/ 18 | .loadpath 19 | .recommenders 20 | kami_Client.launch 21 | kami_Server.launch 22 | client_Client.launch 23 | client_Server.launch 24 | .classpath 25 | .project 26 | 27 | # External tool builders 28 | .externalToolBuilders/ 29 | 30 | # Locally stored "Eclipse launch configurations" 31 | *.launch 32 | 33 | # PyDev specific (Python IDE for Eclipse) 34 | *.pydevproject 35 | 36 | # CDT-specific (C/C++ Development Tooling) 37 | .cproject 38 | 39 | # CDT- autotools 40 | .autotools 41 | 42 | # Java annotation processor (APT) 43 | .factorypath 44 | 45 | # PDT-specific (PHP Development Tools) 46 | .buildpath 47 | 48 | # sbteclipse plugin 49 | .target 50 | 51 | # Tern plugin 52 | .tern-project 53 | 54 | # TeXlipse plugin 55 | .texlipse 56 | 57 | # STS (Spring Tool Suite) 58 | .springBeans 59 | 60 | # Code Recommenders 61 | .recommenders/ 62 | 63 | # Annotation Processing 64 | .apt_generated/ 65 | 66 | # Scala IDE specific (Scala & Java development for Eclipse) 67 | .cache-main 68 | .scala_dependencies 69 | .worksheet 70 | 71 | ### Eclipse Patch ### 72 | 73 | # Annotation Processing 74 | .apt_generated 75 | 76 | ### Emacs ### 77 | # -*- mode: gitignore; -*- 78 | *~ 79 | \#*\# 80 | /.emacs.desktop 81 | /.emacs.desktop.lock 82 | *.elc 83 | auto-save-list 84 | tramp 85 | .\#* 86 | 87 | # Org-mode 88 | .org-id-locations 89 | *_archive 90 | 91 | # flymake-mode 92 | *_flymake.* 93 | 94 | # eshell files 95 | /eshell/history 96 | /eshell/lastdir 97 | 98 | # elpa packages 99 | /elpa/ 100 | 101 | # reftex files 102 | *.rel 103 | 104 | # AUCTeX auto folder 105 | /auto/ 106 | 107 | # cask packages 108 | .cask/ 109 | dist/ 110 | 111 | # Flycheck 112 | flycheck_*.el 113 | 114 | # server auth directory 115 | /server/ 116 | 117 | # projectiles files 118 | .projectile 119 | 120 | # directory configuration 121 | .dir-locals.el 122 | 123 | ### Intellij+all ### 124 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm 125 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 126 | 127 | # User-specific stuff 128 | .idea/**/workspace.xml 129 | .idea/**/tasks.xml 130 | .idea/**/usage.statistics.xml 131 | .idea/**/dictionaries 132 | .idea/**/shelf 133 | 134 | # Sensitive or high-churn files 135 | .idea/**/dataSources/ 136 | .idea/**/dataSources.ids 137 | .idea/**/dataSources.local.xml 138 | .idea/**/sqlDataSources.xml 139 | .idea/**/dynamic.xml 140 | .idea/**/uiDesigner.xml 141 | .idea/**/dbnavigator.xml 142 | 143 | # Gradle 144 | .idea/**/gradle.xml 145 | .idea/**/libraries 146 | 147 | # Building 148 | classes 149 | 150 | # Gradle and Maven with auto-import 151 | # When using Gradle or Maven with auto-import, you should exclude module files, 152 | # since they will be recreated, and may cause churn. Uncomment if using 153 | # auto-import. 154 | # .idea/modules.xml 155 | # .idea/*.iml 156 | # .idea/modules 157 | 158 | # CMake 159 | cmake-build-*/ 160 | 161 | # Mongo Explorer plugin 162 | .idea/**/mongoSettings.xml 163 | 164 | # File-based project format 165 | *.iws 166 | 167 | # IntelliJ 168 | out/ 169 | 170 | # mpeltonen/sbt-idea plugin 171 | .idea_modules/ 172 | 173 | # JIRA plugin 174 | atlassian-ide-plugin.xml 175 | 176 | # Cursive Clojure plugin 177 | .idea/replstate.xml 178 | 179 | # Crashlytics plugin (for Android Studio and IntelliJ) 180 | com_crashlytics_export_strings.xml 181 | crashlytics.properties 182 | crashlytics-build.properties 183 | fabric.properties 184 | 185 | # Editor-based Rest Client 186 | .idea/httpRequests 187 | 188 | ### Intellij+all Patch ### 189 | # Ignores the whole .idea folder and all .iml files 190 | # See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 191 | 192 | .idea/ 193 | 194 | # Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 195 | 196 | *.iml 197 | modules.xml 198 | .idea/misc.xml 199 | *.ipr 200 | 201 | ### Linux ### 202 | 203 | # temporary files which can be created if a process still has a handle open of a deleted file 204 | .fuse_hidden* 205 | 206 | # KDE directory preferences 207 | .directory 208 | 209 | # Linux trash folder which might appear on any partition or disk 210 | .Trash-* 211 | 212 | # .nfs files are created when an open file is removed but is still being accessed 213 | .nfs* 214 | 215 | ### Vim ### 216 | # Swap 217 | [._]*.s[a-v][a-z] 218 | [._]*.sw[a-p] 219 | [._]s[a-rt-v][a-z] 220 | [._]ss[a-gi-z] 221 | [._]sw[a-p] 222 | 223 | # Session 224 | Session.vim 225 | 226 | # Temporary 227 | .netrwhist 228 | # Auto-generated tag files 229 | tags 230 | # Persistent undo 231 | [._]*.un~ 232 | 233 | ### Windows ### 234 | # Windows thumbnail cache files 235 | Thumbs.db 236 | ehthumbs.db 237 | ehthumbs_vista.db 238 | 239 | # Dump file 240 | *.stackdump 241 | 242 | # Folder config file 243 | [Dd]esktop.ini 244 | 245 | # Recycle Bin used on file shares 246 | $RECYCLE.BIN/ 247 | 248 | # Windows Installer files 249 | *.cab 250 | *.msi 251 | *.msix 252 | *.msm 253 | *.msp 254 | 255 | # Windows shortcuts 256 | *.lnk 257 | 258 | ### Gradle ### 259 | .gradle 260 | /build/ 261 | 262 | # Ignore Gradle GUI config 263 | gradle-app.setting 264 | 265 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) 266 | !gradle-wrapper.jar 267 | 268 | # Cache of project 269 | .gradletasknamecache 270 | 271 | # # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 272 | # gradle/wrapper/gradle-wrapper.properties 273 | 274 | # End of https://www.gitignore.io/api/linux,gradle,eclipse,windows,forgegradle,intellij+all,emacs,vim 275 | /target/ 276 | 277 | # macOS system generate files 278 | .DS_Store -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | 6 | Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 7 | 8 | This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 9 | 10 | 0. Additional Definitions. 11 | As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License. 12 | 13 | “The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. 14 | 15 | An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. 16 | 17 | A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”. 18 | 19 | The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. 20 | 21 | The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 22 | 23 | 1. Exception to Section 3 of the GNU GPL. 24 | You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 25 | 26 | 2. Conveying Modified Versions. 27 | If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: 28 | 29 | a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or 30 | b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 31 | 3. Object Code Incorporating Material from Library Header Files. 32 | The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: 33 | 34 | a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. 35 | b) Accompany the object code with a copy of the GNU GPL and this license document. 36 | 4. Combined Works. 37 | You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: 38 | 39 | a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. 40 | b) Accompany the Combined Work with a copy of the GNU GPL and this license document. 41 | c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. 42 | d) Do one of the following: 43 | 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 44 | 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. 45 | e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 46 | 5. Combined Libraries. 47 | You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: 48 | 49 | a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. 50 | b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 51 | 6. Revised Versions of the GNU Lesser General Public License. 52 | The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. 53 | 54 | Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. 55 | 56 | If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. 57 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PacketFlight plugin for Lambda Client 2 | ##### Tested on 2b2tpvp 3 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | version project.modVersion 2 | group project.modGroup 3 | 4 | buildscript { 5 | repositories { 6 | maven { url = 'https://files.minecraftforge.net/maven' } 7 | maven { url = 'https://repo.spongepowered.org/repository/maven-public/' } 8 | } 9 | 10 | dependencies { 11 | classpath 'net.minecraftforge.gradle:ForgeGradle:5.+' 12 | classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT' 13 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" 14 | } 15 | } 16 | 17 | apply plugin: 'idea' 18 | apply plugin: 'kotlin' 19 | apply plugin: 'net.minecraftforge.gradle' 20 | apply plugin: 'org.spongepowered.mixin' 21 | 22 | compileJava { 23 | sourceCompatibility = targetCompatibility = '1.8' 24 | options.encoding = 'UTF-8' 25 | } 26 | 27 | compileKotlin.kotlinOptions { 28 | freeCompilerArgs += '-Xlambdas=indy' 29 | freeCompilerArgs += '-Xopt-in=kotlin.RequiresOptIn' 30 | freeCompilerArgs += '-Xopt-in=kotlin.contracts.ExperimentalContracts' 31 | } 32 | 33 | repositories { 34 | maven { url = 'https://repo.spongepowered.org/repository/maven-public/' } 35 | maven { url = 'https://impactdevelopment.github.io/maven/' } 36 | maven { url = "https://jitpack.io" } 37 | mavenCentral() 38 | } 39 | 40 | 41 | minecraft { 42 | mappings channel: "$mappingsChannel", version: "$mappingsVersion" 43 | 44 | runs { 45 | client { 46 | workingDirectory project.file('run') 47 | 48 | property 'fml.coreMods.load', 'com.lambda.client.mixin.MixinLoaderForge' 49 | property 'mixin.env.disableRefMap', 'true' // Disable refmap so we don't get trolled by Baritone 50 | 51 | property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' 52 | property 'forge.logging.console.level', 'debug' 53 | } 54 | } 55 | } 56 | 57 | configurations { 58 | jarLibs 59 | // Force choosing the correct nightly build because Mac OS chooses an invalid one 60 | all { 61 | resolutionStrategy { 62 | force 'org.lwjgl.lwjgl:lwjgl-platform:2.9.4-nightly-20150209' 63 | } 64 | } 65 | } 66 | 67 | dependencies { 68 | minecraft "net.minecraftforge:forge:$minecraftVersion-$forgeVersion" 69 | 70 | // Online maven dependency coming soon 71 | implementation files("lib/lambda-3.1-api.jar") 72 | 73 | implementation('org.spongepowered:mixin:0.8.3') { 74 | exclude module: 'commons-io' 75 | exclude module: 'gson' 76 | exclude module: 'guava' 77 | exclude module: 'launchwrapper' 78 | exclude module: 'log4j-core' // we want to exclude this as well because 0.7.11 includes it too new for MC 79 | } 80 | 81 | // Hacky way to get mixin work 82 | annotationProcessor('org.spongepowered:mixin:0.8.3:processor') { 83 | exclude module: 'gson' 84 | } 85 | 86 | // Kotlin libs 87 | // kotlin-stdlib-common and annotations aren't required at runtime 88 | implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion") { 89 | exclude module: 'kotlin-stdlib-common' 90 | exclude module: 'annotations' 91 | } 92 | 93 | implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion") { 94 | exclude module: 'kotlin-stdlib-common' 95 | exclude module: 'annotations' 96 | } 97 | 98 | implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion") { 99 | exclude module: 'kotlin-stdlib-common' 100 | exclude module: 'annotations' 101 | } 102 | 103 | implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion") { 104 | exclude module: 'kotlin-stdlib-common' 105 | exclude module: 'annotations' 106 | } 107 | 108 | implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion") { 109 | exclude module: 'kotlin-stdlib-common' 110 | exclude module: 'annotations' 111 | } 112 | 113 | // Add them back to compileOnly (provided) 114 | compileOnly "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlinVersion" 115 | compileOnly 'org.jetbrains:annotations:23.0.0' 116 | 117 | // This Baritone will NOT be included in the jar 118 | implementation 'com.github.cabaletta:baritone:1.2.14' 119 | 120 | // Unit Testing frameworks 121 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' 122 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2' 123 | 124 | // Add your dependencies below 125 | // jarLibs 'com.lambda:example:1.0.0' 126 | } 127 | 128 | mixin { 129 | defaultObfuscationEnv 'searge' 130 | add sourceSets.main, 'mixins.ExamplePlugin.refmap.json' 131 | } 132 | 133 | processResources { 134 | exclude '**/rawimagefiles' 135 | 136 | from(sourceSets.main.resources.srcDirs) { 137 | duplicatesStrategy = DuplicatesStrategy.INCLUDE 138 | include 'plugin_info.json' 139 | expand 'version': project.version 140 | } 141 | } 142 | 143 | test { 144 | useJUnitPlatform() 145 | } 146 | 147 | jar.finalizedBy('reobfJar') -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx3G 2 | org.gradle.parallel=true 3 | 4 | modGroup=com.lambda 5 | modVersion=1.0 6 | 7 | minecraftVersion=1.12.2 8 | forgeVersion=14.23.5.2860 9 | mappingsChannel=stable 10 | mappingsVersion=39-1.12 11 | 12 | kotlinVersion=1.6.20 13 | kotlinxCoroutinesVersion=1.6.1 -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Doogie13/LambdaPacketFlyPlugin/7c2971f5b4e2bfc6c9378b52fb904ed9a4d6a687/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # 4 | # Copyright 2015 the original author or authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | ## 21 | ## Gradle start up script for UN*X 22 | ## 23 | ############################################################################## 24 | 25 | # Attempt to set APP_HOME 26 | # Resolve links: $0 may be a link 27 | PRG="$0" 28 | # Need this for relative symlinks. 29 | while [ -h "$PRG" ] ; do 30 | ls=`ls -ld "$PRG"` 31 | link=`expr "$ls" : '.*-> \(.*\)$'` 32 | if expr "$link" : '/.*' > /dev/null; then 33 | PRG="$link" 34 | else 35 | PRG=`dirname "$PRG"`"/$link" 36 | fi 37 | done 38 | SAVED="`pwd`" 39 | cd "`dirname \"$PRG\"`/" >/dev/null 40 | APP_HOME="`pwd -P`" 41 | cd "$SAVED" >/dev/null 42 | 43 | APP_NAME="Gradle" 44 | APP_BASE_NAME=`basename "$0"` 45 | 46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 48 | 49 | # Use the maximum available, or set MAX_FD != -1 to use that value. 50 | MAX_FD="maximum" 51 | 52 | warn () { 53 | echo "$*" 54 | } 55 | 56 | die () { 57 | echo 58 | echo "$*" 59 | echo 60 | exit 1 61 | } 62 | 63 | # OS specific support (must be 'true' or 'false'). 64 | cygwin=false 65 | msys=false 66 | darwin=false 67 | nonstop=false 68 | case "`uname`" in 69 | CYGWIN* ) 70 | cygwin=true 71 | ;; 72 | Darwin* ) 73 | darwin=true 74 | ;; 75 | MINGW* ) 76 | msys=true 77 | ;; 78 | NONSTOP* ) 79 | nonstop=true 80 | ;; 81 | esac 82 | 83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 84 | 85 | 86 | # Determine the Java command to use to start the JVM. 87 | if [ -n "$JAVA_HOME" ] ; then 88 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 89 | # IBM's JDK on AIX uses strange locations for the executables 90 | JAVACMD="$JAVA_HOME/jre/sh/java" 91 | else 92 | JAVACMD="$JAVA_HOME/bin/java" 93 | fi 94 | if [ ! -x "$JAVACMD" ] ; then 95 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 96 | 97 | Please set the JAVA_HOME variable in your environment to match the 98 | location of your Java installation." 99 | fi 100 | else 101 | JAVACMD="java" 102 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 103 | 104 | Please set the JAVA_HOME variable in your environment to match the 105 | location of your Java installation." 106 | fi 107 | 108 | # Increase the maximum file descriptors if we can. 109 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 110 | MAX_FD_LIMIT=`ulimit -H -n` 111 | if [ $? -eq 0 ] ; then 112 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 113 | MAX_FD="$MAX_FD_LIMIT" 114 | fi 115 | ulimit -n $MAX_FD 116 | if [ $? -ne 0 ] ; then 117 | warn "Could not set maximum file descriptor limit: $MAX_FD" 118 | fi 119 | else 120 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 121 | fi 122 | fi 123 | 124 | # For Darwin, add options to specify how the application appears in the dock 125 | if $darwin; then 126 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 127 | fi 128 | 129 | # For Cygwin or MSYS, switch paths to Windows format before running java 130 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then 131 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 132 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 133 | 134 | JAVACMD=`cygpath --unix "$JAVACMD"` 135 | 136 | # We build the pattern for arguments to be converted via cygpath 137 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 138 | SEP="" 139 | for dir in $ROOTDIRSRAW ; do 140 | ROOTDIRS="$ROOTDIRS$SEP$dir" 141 | SEP="|" 142 | done 143 | OURCYGPATTERN="(^($ROOTDIRS))" 144 | # Add a user-defined pattern to the cygpath arguments 145 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 146 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 147 | fi 148 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 149 | i=0 150 | for arg in "$@" ; do 151 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 152 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 153 | 154 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 155 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 156 | else 157 | eval `echo args$i`="\"$arg\"" 158 | fi 159 | i=`expr $i + 1` 160 | done 161 | case $i in 162 | 0) set -- ;; 163 | 1) set -- "$args0" ;; 164 | 2) set -- "$args0" "$args1" ;; 165 | 3) set -- "$args0" "$args1" "$args2" ;; 166 | 4) set -- "$args0" "$args1" "$args2" "$args3" ;; 167 | 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 168 | 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 169 | 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 170 | 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 171 | 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 172 | esac 173 | fi 174 | 175 | # Escape application args 176 | save () { 177 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 178 | echo " " 179 | } 180 | APP_ARGS=`save "$@"` 181 | 182 | # Collect all arguments for the java command, following the shell quoting and substitution rules 183 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 184 | 185 | exec "$JAVACMD" "$@" 186 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if "%ERRORLEVEL%"=="0" goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 84 | exit /b 1 85 | 86 | :mainEnd 87 | if "%OS%"=="Windows_NT" endlocal 88 | 89 | :omega 90 | -------------------------------------------------------------------------------- /lib/lambda-3.1-api-source.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Doogie13/LambdaPacketFlyPlugin/7c2971f5b4e2bfc6c9378b52fb904ed9a4d6a687/lib/lambda-3.1-api-source.jar -------------------------------------------------------------------------------- /lib/lambda-3.1-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Doogie13/LambdaPacketFlyPlugin/7c2971f5b4e2bfc6c9378b52fb904ed9a4d6a687/lib/lambda-3.1-api.jar -------------------------------------------------------------------------------- /setupWorkspace.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Used to setup workspace and fix building on unix / Git BASH 4 | # 5 | # Usage: "./setupWorkspace.sh" 6 | 7 | # 8 | 9 | # To allow use from outside the lambda directory 10 | cd "$(dirname "$0")" || exit 11 | 12 | echo "[$(date +"%H:%M:%S")] Running gradlew classes without daemon..." 13 | ./gradlew --no-daemon classes || { 14 | echo "[$(date +"%H:%M:%S")] ERROR: Running gradlew build failed! Run './gradlew --no-daemon classes' manually" 15 | exit 1 16 | } 17 | 18 | cat logo_ascii.txt 2>/dev/null 19 | echo "==========================================================================" 20 | echo "" 21 | echo "[$(date +"%H:%M:%S")] Build succeeded! All checks passed, you can build normally now! Welcome to Lambda." 22 | echo "" 23 | echo "==========================================================================" 24 | -------------------------------------------------------------------------------- /src/main/kotlin/com/lambda/PacketFlightController.kt: -------------------------------------------------------------------------------- 1 | package com.lambda 2 | 3 | import com.lambda.client.plugin.api.Plugin 4 | import com.lambda.modules.PacketFlight 5 | 6 | internal object PacketFlightController : Plugin() { 7 | 8 | override fun onLoad() { 9 | // Load any modules, commands, or HUD elements here 10 | modules.add(PacketFlight) 11 | } 12 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/lambda/modules/PacketFlight.kt: -------------------------------------------------------------------------------- 1 | package com.lambda.modules 2 | 3 | import com.lambda.PacketFlightController 4 | import com.lambda.client.event.SafeClientEvent 5 | import com.lambda.client.event.events.PacketEvent 6 | import com.lambda.client.event.events.PlayerMoveEvent 7 | import com.lambda.client.mixin.extension.playerPosLookPitch 8 | import com.lambda.client.mixin.extension.playerPosLookYaw 9 | import com.lambda.client.module.Category 10 | import com.lambda.client.plugin.api.PluginModule 11 | import com.lambda.client.util.MovementUtils.calcMoveYaw 12 | import com.lambda.client.util.threads.safeListener 13 | import net.minecraft.client.gui.* 14 | import net.minecraft.client.multiplayer.GuiConnecting 15 | import net.minecraft.network.play.client.CPacketConfirmTeleport 16 | import net.minecraft.network.play.client.CPacketPlayer 17 | import net.minecraft.network.play.server.SPacketPlayerPosLook 18 | import net.minecraft.util.math.Vec3d 19 | import java.util.function.Supplier 20 | import kotlin.math.* 21 | 22 | 23 | /** 24 | * @author Doogie13 25 | * @since 30/05/2022 26 | */ 27 | object PacketFlight : PluginModule( 28 | name = "PacketFlight", 29 | category = Category.MOVEMENT, 30 | description = "MOVES YOU", 31 | pluginMain = PacketFlightController 32 | ) { 33 | 34 | private val mode by setting("Mode", Mode.FACTOR) 35 | private val factor by setting("Factor", 1.0, 0.0..3.0, .1) 36 | private val conceal by setting("Conceal", false) 37 | private val timeOut by setting("Lag Back Timeout", 5, 0..50, 1) 38 | private val shouldAntiKick by setting("AntiKick", false) 39 | 40 | @Suppress("Unused") 41 | enum class Mode { 42 | FAST, FACTOR, SETBACK 43 | } 44 | 45 | private var allowed: ArrayList = ArrayList() 46 | 47 | // history of packets we are yet to respond to 48 | private var history: HashMap = HashMap() 49 | 50 | // base move speed 51 | private const val MOVE_SPEED = .2873 52 | 53 | // .0001 slower than server will check for 54 | private const val CONCEAL_SPEED = .0624 55 | 56 | private val walls: Supplier = Supplier { mc.world.collidesWithAnyBlock(mc.player.entityBoundingBox) } 57 | 58 | private val antiKick: Supplier = Supplier { 59 | shouldAntiKick && 60 | !(mc.player.posY % 1 == 0.0 && mc.world.collidesWithAnyBlock(mc.player.entityBoundingBox.offset(0.0, -.01, 0.0))) && !walls.get() 61 | } 62 | 63 | private var tpID = -69 64 | 65 | private var timer = 0 66 | 67 | init { 68 | 69 | onEnable { 70 | allowed = ArrayList() 71 | 72 | tpID = -69 73 | 74 | history.clear() 75 | } 76 | 77 | onDisable { 78 | if (mc.player != null) { 79 | mc.player.connection.sendPacket(CPacketPlayer.Rotation(mc.player.rotationYaw, mc.player.rotationPitch, mc.player.onGround)) 80 | mc.player.setVelocity(0.0, 0.0, 0.0) 81 | } 82 | } 83 | 84 | safeListener { 85 | 86 | if (mc.currentScreen is GuiMainMenu || mc.currentScreen is GuiDisconnected || mc.currentScreen is GuiConnecting || mc.currentScreen is GuiDownloadTerrain) { 87 | disable() 88 | return@safeListener 89 | } 90 | 91 | timer-- 92 | 93 | // never apply speed when concealing due to the fact concealing is unrelated to anticheat move check 94 | var speed = if (conceal || walls.get() || timer > 0) CONCEAL_SPEED else MOVE_SPEED 95 | 96 | var thisFactor = floor(factor).toInt() 97 | 98 | if (mode == Mode.FACTOR) { 99 | if (mc.player.ticksExisted % 10 < 10 * (factor - floor(factor))) thisFactor++ 100 | if (mc.player.moveStrafing == 0f && mc.player.moveForward == 0f) { 101 | if (!mc.gameSettings.keyBindJump.isKeyDown && !mc.gameSettings.keyBindSneak.isKeyDown) thisFactor = 1 102 | } 103 | } else thisFactor = 1 104 | 105 | var y = 0.0 106 | 107 | if (mc.gameSettings.keyBindJump.isKeyDown) { 108 | if (!walls.get()) { 109 | y = CONCEAL_SPEED 110 | speed = 0.0 111 | } else { 112 | // 0.707 is sqrt(2)/2 113 | speed = CONCEAL_SPEED * 0.707 114 | y = speed 115 | } 116 | } else if (mc.gameSettings.keyBindSneak.isKeyDown) { 117 | if (!walls.get()) { 118 | y = -CONCEAL_SPEED 119 | } else { 120 | y = -CONCEAL_SPEED * 0.707 121 | speed = CONCEAL_SPEED * 0.707 122 | } 123 | } 124 | 125 | val antiKicks = mc.player.ticksExisted % 40 == 0 && antiKick.get() 126 | 127 | if (hypot(speed, y) > .2873) { 128 | speed = sqrt(speed * speed - y * y) 129 | } 130 | 131 | sendPackets(speed, y, thisFactor, antiKicks) 132 | 133 | mc.player.noClip = true 134 | 135 | } 136 | 137 | safeListener { event -> 138 | 139 | if (event.packet is CPacketPlayer) { 140 | if (event.packet !is CPacketPlayer.Position) { 141 | event.cancel() 142 | return@safeListener 143 | } 144 | if (!allowed.contains(event.packet as CPacketPlayer.Position)) { 145 | event.cancel() 146 | } else { 147 | allowed.remove(event.packet as CPacketPlayer.Position) 148 | } 149 | } 150 | 151 | } 152 | 153 | safeListener { event -> 154 | 155 | if (event.packet is SPacketPlayerPosLook) { 156 | 157 | val packet = event.packet as SPacketPlayerPosLook 158 | val id = packet.teleportId 159 | 160 | if (history.containsKey(id)) { 161 | 162 | val vec : Vec3d = history[id] ?: return@safeListener 163 | 164 | if (vec.x == packet.x && vec.y == packet.y && vec.z == packet.z) { 165 | 166 | if (mode != Mode.SETBACK) 167 | event.cancel() 168 | 169 | history.remove(id) 170 | 171 | mc.player.connection.sendPacket(CPacketConfirmTeleport(id)) 172 | 173 | return@safeListener 174 | 175 | } 176 | 177 | } 178 | 179 | packet.playerPosLookYaw = (mc.player.rotationYaw) 180 | packet.playerPosLookPitch = (mc.player.rotationPitch) 181 | 182 | mc.player.connection.sendPacket(CPacketConfirmTeleport(id)) 183 | 184 | timer = timeOut 185 | 186 | tpID = id 187 | 188 | } 189 | 190 | } 191 | 192 | } 193 | 194 | private fun SafeClientEvent.sendPackets(speed: Double, y: Double, factor: Int, antiKicking: Boolean) { 195 | 196 | val yaw = calcMoveYaw() 197 | var motionX = -sin(yaw) 198 | var motionZ = cos(yaw) 199 | 200 | if (factor == 0) { 201 | mc.player.setVelocity(0.0, 0.0, 0.0) 202 | return 203 | } 204 | 205 | if (mc.player.moveForward == 0f && mc.player.moveStrafing == 0f) { 206 | motionX = .0 207 | motionZ = .0 208 | } 209 | 210 | for (currentFactor in 1 until factor + 1) { 211 | var thisY = y 212 | 213 | if (antiKicking) { 214 | thisY = -.04 215 | } else { 216 | thisY *= currentFactor 217 | } 218 | 219 | val moveVec = Vec3d( 220 | mc.player.posX + (motionX * speed * currentFactor), 221 | mc.player.posY + (thisY), 222 | mc.player.posZ + (motionZ * speed * currentFactor) 223 | ) 224 | 225 | mc.player.setVelocity(moveVec.x - mc.player.posX, moveVec.y - mc.player.posY, moveVec.z - mc.player.posZ) 226 | 227 | val bounds = CPacketPlayer.Position( 228 | mc.player.posX, 229 | mc.player.posY - 1337, 230 | mc.player.posZ, true 231 | ) 232 | 233 | val thisPacket = CPacketPlayer.Position(moveVec.x, moveVec.y, moveVec.z, true) 234 | allowed.add(thisPacket) 235 | mc.player.connection.sendPacket(thisPacket) 236 | allowed.add(bounds) 237 | mc.player.connection.sendPacket(bounds) 238 | history[++tpID] = moveVec 239 | mc.player.connection.sendPacket(CPacketConfirmTeleport(tpID)) 240 | } 241 | 242 | } 243 | 244 | } -------------------------------------------------------------------------------- /src/main/resources/plugin_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PacketFlightModule", 3 | "version": "1.0", 4 | "description": "Added packetfly to rival future", 5 | "url": "https://github.com/Doogie13/LambdaPacketFlyPlugin", 6 | "authors": [ "Doogie13" ], 7 | "main_class": "com.lambda.PacketFlightController", 8 | "min_api_version": "3.0", 9 | "required_plugins": [] 10 | } -------------------------------------------------------------------------------- /src/test/kotlin/ClassTest.kt: -------------------------------------------------------------------------------- 1 | import org.junit.jupiter.api.Test 2 | import org.junit.jupiter.api.fail 3 | import com.google.gson.JsonParser 4 | import com.lambda.client.commons.utils.ClassUtils.instance 5 | import com.lambda.client.plugin.api.Plugin 6 | 7 | class ClassTest { 8 | 9 | @Test 10 | fun testPluginClass() { 11 | val gson = JsonParser() 12 | 13 | val pluginInfo = this.javaClass.classLoader.getResourceAsStream("plugin_info.json") 14 | ?: fail("plugin_info.json not found.") 15 | 16 | val pluginInfoJson = gson.parse(pluginInfo.reader()).asJsonObject.get("main_class")?.asString 17 | ?: fail("main_class key not found in plugin_info.json.") 18 | 19 | try { 20 | Class.forName(pluginInfoJson) 21 | } catch (e: ClassNotFoundException) { 22 | fail("Class $pluginInfoJson not found in the plugin classpath.") 23 | } 24 | 25 | if (Class.forName(pluginInfoJson).instance !is Plugin) { 26 | fail("Class $pluginInfoJson is not a subclass of Plugin.") 27 | } 28 | } 29 | } --------------------------------------------------------------------------------