diff --git a/L2ClientDat/.classpath b/L2ClientDat/.classpath
deleted file mode 100644
index 490523f44e..0000000000
--- a/L2ClientDat/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/.project b/L2ClientDat/.project
deleted file mode 100644
index db82bdc4d5..0000000000
--- a/L2ClientDat/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- L2ClientDat
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
diff --git a/L2ClientDat/.settings/org.eclipse.core.resources.prefs b/L2ClientDat/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 4824b80263..0000000000
--- a/L2ClientDat/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-encoding/=UTF-8
diff --git a/L2ClientDat/.settings/org.eclipse.core.runtime.prefs b/L2ClientDat/.settings/org.eclipse.core.runtime.prefs
deleted file mode 100644
index f8a67de1d4..0000000000
--- a/L2ClientDat/.settings/org.eclipse.core.runtime.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-line.separator=\r\n
diff --git a/L2ClientDat/.settings/org.eclipse.jdt.core.prefs b/L2ClientDat/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index cca85c9968..0000000000
--- a/L2ClientDat/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,428 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.codeComplete.argumentPrefixes=
-org.eclipse.jdt.core.codeComplete.argumentSuffixes=
-org.eclipse.jdt.core.codeComplete.fieldPrefixes=
-org.eclipse.jdt.core.codeComplete.fieldSuffixes=
-org.eclipse.jdt.core.codeComplete.localPrefixes=
-org.eclipse.jdt.core.codeComplete.localSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
-org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
-org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=no_tag
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=disabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=disabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.8
-org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=48
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0
-org.eclipse.jdt.core.formatter.alignment_for_assignment=4
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=0
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=0
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=0
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=49
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=49
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=85
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=48
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true
-org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=300
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=1
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=true
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=300
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_on_off_tags=true
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/L2ClientDat/.settings/org.eclipse.jdt.ui.prefs b/L2ClientDat/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 8a4c9d4e1c..0000000000
--- a/L2ClientDat/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,131 +0,0 @@
-cleanup.add_default_serial_version_id=false
-cleanup.add_generated_serial_version_id=true
-cleanup.add_missing_annotations=true
-cleanup.add_missing_deprecated_annotations=true
-cleanup.add_missing_methods=true
-cleanup.add_missing_nls_tags=false
-cleanup.add_missing_override_annotations=true
-cleanup.add_missing_override_annotations_interface_methods=true
-cleanup.add_serial_version_id=false
-cleanup.always_use_blocks=true
-cleanup.always_use_parentheses_in_expressions=true
-cleanup.always_use_this_for_non_static_field_access=false
-cleanup.always_use_this_for_non_static_method_access=false
-cleanup.convert_functional_interfaces=false
-cleanup.convert_to_enhanced_for_loop=true
-cleanup.correct_indentation=false
-cleanup.format_source_code=true
-cleanup.format_source_code_changes_only=false
-cleanup.insert_inferred_type_arguments=false
-cleanup.make_local_variable_final=false
-cleanup.make_parameters_final=false
-cleanup.make_private_fields_final=true
-cleanup.make_type_abstract_if_missing_method=false
-cleanup.make_variable_declarations_final=true
-cleanup.never_use_blocks=false
-cleanup.never_use_parentheses_in_expressions=false
-cleanup.organize_imports=true
-cleanup.qualify_static_field_accesses_with_declaring_class=false
-cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-cleanup.qualify_static_member_accesses_with_declaring_class=true
-cleanup.qualify_static_method_accesses_with_declaring_class=false
-cleanup.remove_private_constructors=true
-cleanup.remove_redundant_type_arguments=true
-cleanup.remove_trailing_whitespaces=false
-cleanup.remove_trailing_whitespaces_all=true
-cleanup.remove_trailing_whitespaces_ignore_empty=true
-cleanup.remove_unnecessary_casts=true
-cleanup.remove_unnecessary_nls_tags=true
-cleanup.remove_unused_imports=true
-cleanup.remove_unused_local_variables=false
-cleanup.remove_unused_private_fields=false
-cleanup.remove_unused_private_members=true
-cleanup.remove_unused_private_methods=false
-cleanup.remove_unused_private_types=true
-cleanup.sort_members=false
-cleanup.sort_members_all=false
-cleanup.use_anonymous_class_creation=false
-cleanup.use_blocks=true
-cleanup.use_blocks_only_for_return_and_throw=false
-cleanup.use_lambda=true
-cleanup.use_parentheses_in_expressions=true
-cleanup.use_this_for_non_static_field_access=true
-cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-cleanup.use_this_for_non_static_method_access=true
-cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-cleanup.use_type_arguments=false
-cleanup_profile=_L2J-Mobius Clean Up
-cleanup_settings_version=2
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_L2J-Mobius Formatter
-formatter_settings_version=12
-org.eclipse.jdt.ui.exception.name=e
-org.eclipse.jdt.ui.gettersetter.use.is=true
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=java;javax;org;commons;com;
-org.eclipse.jdt.ui.javadoc=true
-org.eclipse.jdt.ui.keywordthis=false
-org.eclipse.jdt.ui.ondemandthreshold=99
-org.eclipse.jdt.ui.overrideannotation=true
-org.eclipse.jdt.ui.staticondemandthreshold=99
-org.eclipse.jdt.ui.text.custom_code_templates=/**\r\n * @return the ${bare_field_name}\r\n *//**\r\n * @param ${param} the ${bare_field_name} to set\r\n *//**\r\n * ${tags}\r\n *//*&\#13;\r\n * This file is part of the L2J Mobius project.&\#13;\r\n * &\#13;\r\n * This program is free software\: you can redistribute it and/or modify&\#13;\r\n * it under the terms of the GNU General Public License as published by&\#13;\r\n * the Free Software Foundation, either version 3 of the License, or&\#13;\r\n * (at your option) any later version.&\#13;\r\n * &\#13;\r\n * This program is distributed in the hope that it will be useful,&\#13;\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of&\#13;\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&\#13;\r\n * General Public License for more details.&\#13;\r\n * &\#13;\r\n * You should have received a copy of the GNU General Public License&\#13;\r\n * along with this program. If not, see <http\://www.gnu.org/licenses/>.&\#13;\r\n *//**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n *//**\r\n * \r\n *//**\r\n * ${tags}\r\n *//* (non-Javadoc)\r\n * ${see_to_overridden}\r\n *//**\r\n * ${tags}\r\n * ${see_to_target}\r\n */${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}\r\n\r\n\r\n\r\n// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();// ${todo} Auto-generated method stub\r\n${body_statement}${body_statement}\r\n// ${todo} Auto-generated constructor stubreturn ${field};${field} \= ${param};
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_methods=false
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_missing_override_annotations_interface_methods=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=true
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_functional_interfaces=true
-sp_cleanup.convert_to_enhanced_for_loop=true
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.format_source_code_changes_only=false
-sp_cleanup.insert_inferred_type_arguments=false
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_type_abstract_if_missing_method=false
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=false
-sp_cleanup.on_save_use_additional_actions=true
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_redundant_type_arguments=false
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=true
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=true
-sp_cleanup.remove_unused_imports=true
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_anonymous_class_creation=false
-sp_cleanup.use_blocks=true
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_lambda=true
-sp_cleanup.use_parentheses_in_expressions=true
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-sp_cleanup.use_type_arguments=false
diff --git a/L2ClientDat/.settings/org.eclipse.ltk.core.refactoring.prefs b/L2ClientDat/.settings/org.eclipse.ltk.core.refactoring.prefs
deleted file mode 100644
index cfcd1d3c22..0000000000
--- a/L2ClientDat/.settings/org.eclipse.ltk.core.refactoring.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/L2ClientDat/.settings/org.eclipse.wst.sse.core.prefs b/L2ClientDat/.settings/org.eclipse.wst.sse.core.prefs
deleted file mode 100644
index a640cfdb22..0000000000
--- a/L2ClientDat/.settings/org.eclipse.wst.sse.core.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-eclipse.preferences.version=1
-task-tags/enabled=true
-task-tags/use-project-settings=true
diff --git a/L2ClientDat/.settings/org.eclipse.wst.validation.prefs b/L2ClientDat/.settings/org.eclipse.wst.validation.prefs
deleted file mode 100644
index 63a18689fb..0000000000
--- a/L2ClientDat/.settings/org.eclipse.wst.validation.prefs
+++ /dev/null
@@ -1,12 +0,0 @@
-DELEGATES_PREFERENCE=delegateValidatorList
-USER_BUILD_PREFERENCE=enabledBuildValidatorList
-USER_MANUAL_PREFERENCE=enabledManualValidatorList
-USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.2.400.v201204260100
-eclipse.preferences.version=1
-override=true
-suspend=false
-vals/org.eclipse.wst.dtd.core.dtdDTDValidator/global=FF01
-vals/org.eclipse.wst.html.core.HTMLValidator/global=FF01
-vals/org.eclipse.wst.html.ui.HTMLValidator/global=TF01
-vals/org.eclipse.wst.xml.core.xml/groups=0107include05111contentType128org.eclipse.core.runtime.xmlT111contentType134org.eclipse.wst.xml.core.xmlsourceT111contentType134org.eclipse.wst.xml.core.xslsourceT111contentType134org.eclipse.jst.jsp.core.tldsourceT07fileext03xmlF0107exclude08113projectNature134org.eclipse.jst.j2ee.ejb.EJBNature113projectNature130org.eclipse.jst.j2ee.EARNature04file08.projectT0104file110.classpathT0104file110.settings/T0204file03binF0204file05buildF0204file09build.xmlF01
-vf.version=3
diff --git a/L2ClientDat/build.xml b/L2ClientDat/build.xml
deleted file mode 100644
index bf40af6da7..0000000000
--- a/L2ClientDat/build.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
- This file is part of the L2J Mobius project.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see [http://www.gnu.org/licenses/].
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2ClientDat/dist/!definitions.xml b/L2ClientDat/dist/!definitions.xml
deleted file mode 100644
index 965d4d0854..0000000000
--- a/L2ClientDat/dist/!definitions.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2ClientDat/dist/L2ClientDat.bat b/L2ClientDat/dist/L2ClientDat.bat
deleted file mode 100644
index ab80a1d248..0000000000
--- a/L2ClientDat/dist/L2ClientDat.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@echo off
-@title L2ClientDat
-@java -Xms512m -Xmx4024m -cp libs/* com.l2jmobius.L2ClientDat
-@pause
\ No newline at end of file
diff --git a/L2ClientDat/dist/L2ClientDat.exe b/L2ClientDat/dist/L2ClientDat.exe
deleted file mode 100644
index 781bbdbcc5..0000000000
Binary files a/L2ClientDat/dist/L2ClientDat.exe and /dev/null differ
diff --git a/L2ClientDat/dist/config/config_debug.ini b/L2ClientDat/dist/config/config_debug.ini
deleted file mode 100644
index 55827edc0f..0000000000
--- a/L2ClientDat/dist/config/config_debug.ini
+++ /dev/null
@@ -1,9 +0,0 @@
-DAT_DEBUG_MSG=false
-DAT_DEBUG_POS=false
-DAT_DEBUG_POS_LIMIT=100000
-
-DAT_REPLACEMENT_NAMES=true
-
-ENCRYPT=true
-SAVE_DECODE=false
-DAT_ADD_END_BYTES=true
diff --git a/L2ClientDat/dist/config/config_window.ini b/L2ClientDat/dist/config/config_window.ini
deleted file mode 100644
index 914d4fd226..0000000000
--- a/L2ClientDat/dist/config/config_window.ini
+++ /dev/null
@@ -1,12 +0,0 @@
-#Saved settings
-#Sun May 13 02:33:14 EEST 2018
-CURRENT_DECRYPT=v413_encdec
-CURRENT_ENCRYPT=v413_encdec
-WINDOW_WIDTH=1000
-WINDOW_HEIGHT=600
-FILE_OPEN_CURRENT_DIRECTORY_PACK=
-LAST_FILE_SELECTED=
-FILE_OPEN_CURRENT_DIRECTORY=
-FILE_OPEN_CURRENT_DIRECTORY_UNPACK=
-FILE_SAVE_CURRENT_DIRECTORY=
-CURRENT_CHRONICLE=28_kor_grand_crusade_p3
diff --git a/L2ClientDat/dist/config/cryptVersion.xml b/L2ClientDat/dist/config/cryptVersion.xml
deleted file mode 100644
index 172b995da4..0000000000
--- a/L2ClientDat/dist/config/cryptVersion.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2ClientDat/dist/config/log4j.dtd b/L2ClientDat/dist/config/log4j.dtd
deleted file mode 100644
index e3c0df4537..0000000000
--- a/L2ClientDat/dist/config/log4j.dtd
+++ /dev/null
@@ -1,166 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/config/log4j.xml b/L2ClientDat/dist/config/log4j.xml
deleted file mode 100644
index 776d788748..0000000000
--- a/L2ClientDat/dist/config/log4j.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2ClientDat/dist/libs/log4j-1.2.17.jar b/L2ClientDat/dist/libs/log4j-1.2.17.jar
deleted file mode 100644
index 068867ebfd..0000000000
Binary files a/L2ClientDat/dist/libs/log4j-1.2.17.jar and /dev/null differ
diff --git a/L2ClientDat/dist/libs/nproperty-1.0.jar b/L2ClientDat/dist/libs/nproperty-1.0.jar
deleted file mode 100644
index 466c1a04e9..0000000000
Binary files a/L2ClientDat/dist/libs/nproperty-1.0.jar and /dev/null differ
diff --git a/L2ClientDat/dist/readme.txt b/L2ClientDat/dist/readme.txt
deleted file mode 100644
index 0559e599b6..0000000000
--- a/L2ClientDat/dist/readme.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-L2ClientDat decoder
-Originally known as Godworld L2ClientDataDecoder v0.4b
-
-For ru we choose chronicles ru_helios
-
-If the dat files are original then the crypt is v413_original
-if not then v413_encdec
-
-After full unpacking, you need to correct Korean errors by replacing all files (or by searching)
-[]] -> [None]
-[skill_end] -> [SpAtk01]
-they are also visible in the log when unpacking.
-
-
-It is not recommended to use the text fields [and].
-
-When DAT_REPLACEMENT_NAMES=true [config_debug.ini]
-You can not change the dates one by one if they contain MAP_INT (only full repacking).
-
-If the file is not going to be collected or disassembled, we turn on the config DAT_DEBUG_MSG and DAT_DEBUG_POS [config_debug.ini].
diff --git a/L2ClientDat/dist/structure/03_en_c3_rise_of_darkness.xml b/L2ClientDat/dist/structure/03_en_c3_rise_of_darkness.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/03_en_c3_rise_of_darkness.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/04_en_c4_scions_of_destiny.xml b/L2ClientDat/dist/structure/04_en_c4_scions_of_destiny.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/04_en_c4_scions_of_destiny.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/05_en_c5_oath_of_blood.xml b/L2ClientDat/dist/structure/05_en_c5_oath_of_blood.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/05_en_c5_oath_of_blood.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/06_en_c6_interlude.xml b/L2ClientDat/dist/structure/06_en_c6_interlude.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/06_en_c6_interlude.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/07_en_hellbound.xml b/L2ClientDat/dist/structure/07_en_hellbound.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/07_en_hellbound.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/08_en_kamael.xml b/L2ClientDat/dist/structure/08_en_kamael.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/08_en_kamael.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/09_en_gracia_part_ 1.xml b/L2ClientDat/dist/structure/09_en_gracia_part_ 1.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/09_en_gracia_part_ 1.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/10_en_gracia_part_ 2.xml b/L2ClientDat/dist/structure/10_en_gracia_part_ 2.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/10_en_gracia_part_ 2.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/11_en_gracia_epilogue.xml b/L2ClientDat/dist/structure/11_en_gracia_epilogue.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/11_en_gracia_epilogue.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/12_en_gracia_final.xml b/L2ClientDat/dist/structure/12_en_gracia_final.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/12_en_gracia_final.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/13_en_freya.xml b/L2ClientDat/dist/structure/13_en_freya.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/13_en_freya.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/14_en_high_five.xml b/L2ClientDat/dist/structure/14_en_high_five.xml
deleted file mode 100644
index e8d2cf6966..0000000000
--- a/L2ClientDat/dist/structure/14_en_high_five.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/L2ClientDat/dist/structure/15_en_awakening.xml b/L2ClientDat/dist/structure/15_en_awakening.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/15_en_awakening.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/16_en_harmony.xml b/L2ClientDat/dist/structure/16_en_harmony.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/16_en_harmony.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/17_en_tauti.xml b/L2ClientDat/dist/structure/17_en_tauti.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/17_en_tauti.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/18_en_glory_days.xml b/L2ClientDat/dist/structure/18_en_glory_days.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/18_en_glory_days.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/19_en_echo.xml b/L2ClientDat/dist/structure/19_en_echo.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/19_en_echo.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/20_cn_lindvior.xml b/L2ClientDat/dist/structure/20_cn_lindvior.xml
deleted file mode 100644
index 2fc60c332a..0000000000
--- a/L2ClientDat/dist/structure/20_cn_lindvior.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/20_kor_lindvior.xml b/L2ClientDat/dist/structure/20_kor_lindvior.xml
deleted file mode 100644
index 38844128d1..0000000000
--- a/L2ClientDat/dist/structure/20_kor_lindvior.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/20_ru_lindvior.xml b/L2ClientDat/dist/structure/20_ru_lindvior.xml
deleted file mode 100644
index 9db8216efa..0000000000
--- a/L2ClientDat/dist/structure/20_ru_lindvior.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/21_cn_epeisodion.xml b/L2ClientDat/dist/structure/21_cn_epeisodion.xml
deleted file mode 100644
index 1acedd4cc7..0000000000
--- a/L2ClientDat/dist/structure/21_cn_epeisodion.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/21_kor_episodion.xml b/L2ClientDat/dist/structure/21_kor_episodion.xml
deleted file mode 100644
index 3e04d6f950..0000000000
--- a/L2ClientDat/dist/structure/21_kor_episodion.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/21_ru_episodion.xml b/L2ClientDat/dist/structure/21_ru_episodion.xml
deleted file mode 100644
index c86db539bc..0000000000
--- a/L2ClientDat/dist/structure/21_ru_episodion.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/22_kor_raider_of_the_lost_ark.xml b/L2ClientDat/dist/structure/22_kor_raider_of_the_lost_ark.xml
deleted file mode 100644
index e1cd2f0779..0000000000
--- a/L2ClientDat/dist/structure/22_kor_raider_of_the_lost_ark.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/23_cn_ertheia.xml b/L2ClientDat/dist/structure/23_cn_ertheia.xml
deleted file mode 100644
index a62d0cb710..0000000000
--- a/L2ClientDat/dist/structure/23_cn_ertheia.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/23_kor_ertheia.xml b/L2ClientDat/dist/structure/23_kor_ertheia.xml
deleted file mode 100644
index a8be56fcd8..0000000000
--- a/L2ClientDat/dist/structure/23_kor_ertheia.xml
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/23_ru_ertheia.xml b/L2ClientDat/dist/structure/23_ru_ertheia.xml
deleted file mode 100644
index 240abd32a7..0000000000
--- a/L2ClientDat/dist/structure/23_ru_ertheia.xml
+++ /dev/null
@@ -1,139 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/24_kor_infinite_odyssey.xml b/L2ClientDat/dist/structure/24_kor_infinite_odyssey.xml
deleted file mode 100644
index 773a2ae422..0000000000
--- a/L2ClientDat/dist/structure/24_kor_infinite_odyssey.xml
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/24_ru_infinite_odyssey.xml b/L2ClientDat/dist/structure/24_ru_infinite_odyssey.xml
deleted file mode 100644
index fdd9aa94cb..0000000000
--- a/L2ClientDat/dist/structure/24_ru_infinite_odyssey.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/25_en_infinite_odyssey_underground.xml b/L2ClientDat/dist/structure/25_en_infinite_odyssey_underground.xml
deleted file mode 100644
index e61014df9d..0000000000
--- a/L2ClientDat/dist/structure/25_en_infinite_odyssey_underground.xml
+++ /dev/null
@@ -1,157 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/25_kor_infinite_odyssey_hymn_of_doul.xml b/L2ClientDat/dist/structure/25_kor_infinite_odyssey_hymn_of_doul.xml
deleted file mode 100644
index 6f034af41e..0000000000
--- a/L2ClientDat/dist/structure/25_kor_infinite_odyssey_hymn_of_doul.xml
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/25_ru_infinite_odyssey_hymn_of_doul.xml b/L2ClientDat/dist/structure/25_ru_infinite_odyssey_hymn_of_doul.xml
deleted file mode 100644
index d122b9e97f..0000000000
--- a/L2ClientDat/dist/structure/25_ru_infinite_odyssey_hymn_of_doul.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/26_kor_infinite_odyssey_will_of_the_ancients.xml b/L2ClientDat/dist/structure/26_kor_infinite_odyssey_will_of_the_ancients.xml
deleted file mode 100644
index 6281768177..0000000000
--- a/L2ClientDat/dist/structure/26_kor_infinite_odyssey_will_of_the_ancients.xml
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/27_kor_helios.xml b/L2ClientDat/dist/structure/27_kor_helios.xml
deleted file mode 100644
index 7e0c8ad9ad..0000000000
--- a/L2ClientDat/dist/structure/27_kor_helios.xml
+++ /dev/null
@@ -1,201 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/27_kor_helios_p2.xml b/L2ClientDat/dist/structure/27_kor_helios_p2.xml
deleted file mode 100644
index 1054f9cd87..0000000000
--- a/L2ClientDat/dist/structure/27_kor_helios_p2.xml
+++ /dev/null
@@ -1,209 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/27_kor_helios_p3.xml b/L2ClientDat/dist/structure/27_kor_helios_p3.xml
deleted file mode 100644
index f4b8880c39..0000000000
--- a/L2ClientDat/dist/structure/27_kor_helios_p3.xml
+++ /dev/null
@@ -1,209 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/27_kor_helios_p4.xml b/L2ClientDat/dist/structure/27_kor_helios_p4.xml
deleted file mode 100644
index 120a1ba898..0000000000
--- a/L2ClientDat/dist/structure/27_kor_helios_p4.xml
+++ /dev/null
@@ -1,209 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/27_kor_helios_p5.xml b/L2ClientDat/dist/structure/27_kor_helios_p5.xml
deleted file mode 100644
index c772212de5..0000000000
--- a/L2ClientDat/dist/structure/27_kor_helios_p5.xml
+++ /dev/null
@@ -1,210 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/27_kor_helios_p6.xml b/L2ClientDat/dist/structure/27_kor_helios_p6.xml
deleted file mode 100644
index eef30af4e4..0000000000
--- a/L2ClientDat/dist/structure/27_kor_helios_p6.xml
+++ /dev/null
@@ -1,214 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/27_ru_helios.xml b/L2ClientDat/dist/structure/27_ru_helios.xml
deleted file mode 100644
index fb73a0e79c..0000000000
--- a/L2ClientDat/dist/structure/27_ru_helios.xml
+++ /dev/null
@@ -1,216 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/28_kor_grand_crusade.xml b/L2ClientDat/dist/structure/28_kor_grand_crusade.xml
deleted file mode 100644
index 5913af98f4..0000000000
--- a/L2ClientDat/dist/structure/28_kor_grand_crusade.xml
+++ /dev/null
@@ -1,218 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/28_kor_grand_crusade_p2.xml b/L2ClientDat/dist/structure/28_kor_grand_crusade_p2.xml
deleted file mode 100644
index 8eca8fb44f..0000000000
--- a/L2ClientDat/dist/structure/28_kor_grand_crusade_p2.xml
+++ /dev/null
@@ -1,218 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/28_kor_grand_crusade_p3.xml b/L2ClientDat/dist/structure/28_kor_grand_crusade_p3.xml
deleted file mode 100644
index cfb72b568e..0000000000
--- a/L2ClientDat/dist/structure/28_kor_grand_crusade_p3.xml
+++ /dev/null
@@ -1,222 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/29_salvation_classic_antharas_innova.xml b/L2ClientDat/dist/structure/29_salvation_classic_antharas_innova.xml
deleted file mode 100644
index dec346135e..0000000000
--- a/L2ClientDat/dist/structure/29_salvation_classic_antharas_innova.xml
+++ /dev/null
@@ -1,223 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/30_salvation_classic_goddard_korea.xml b/L2ClientDat/dist/structure/30_salvation_classic_goddard_korea.xml
deleted file mode 100644
index a526dfcc38..0000000000
--- a/L2ClientDat/dist/structure/30_salvation_classic_goddard_korea.xml
+++ /dev/null
@@ -1,223 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/24hzschema.xml b/L2ClientDat/dist/structure/dats/24hzschema.xml
deleted file mode 100644
index a7913a4e1c..0000000000
--- a/L2ClientDat/dist/structure/dats/24hzschema.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/ability.xml b/L2ClientDat/dist/structure/dats/ability.xml
deleted file mode 100644
index f605078955..0000000000
--- a/L2ClientDat/dist/structure/dats/ability.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/abilitypoint.xml b/L2ClientDat/dist/structure/dats/abilitypoint.xml
deleted file mode 100644
index 10add3993c..0000000000
--- a/L2ClientDat/dist/structure/dats/abilitypoint.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/abnormaldefaulteffect.xml b/L2ClientDat/dist/structure/dats/abnormaldefaulteffect.xml
deleted file mode 100644
index 0d2aefca17..0000000000
--- a/L2ClientDat/dist/structure/dats/abnormaldefaulteffect.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/abnormaledgeeffectdata.xml b/L2ClientDat/dist/structure/dats/abnormaledgeeffectdata.xml
deleted file mode 100644
index d0f23557d7..0000000000
--- a/L2ClientDat/dist/structure/dats/abnormaledgeeffectdata.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/actionname.xml b/L2ClientDat/dist/structure/dats/actionname.xml
deleted file mode 100644
index 50496acba3..0000000000
--- a/L2ClientDat/dist/structure/dats/actionname.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/additionaleffect.xml b/L2ClientDat/dist/structure/dats/additionaleffect.xml
deleted file mode 100644
index 5adac65204..0000000000
--- a/L2ClientDat/dist/structure/dats/additionaleffect.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/additionalitemgrp.xml b/L2ClientDat/dist/structure/dats/additionalitemgrp.xml
deleted file mode 100644
index 661cacca64..0000000000
--- a/L2ClientDat/dist/structure/dats/additionalitemgrp.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/additionaljewelequipeffect.xml b/L2ClientDat/dist/structure/dats/additionaljewelequipeffect.xml
deleted file mode 100644
index 2a73867d97..0000000000
--- a/L2ClientDat/dist/structure/dats/additionaljewelequipeffect.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/additionalnpcgrpparts.xml b/L2ClientDat/dist/structure/dats/additionalnpcgrpparts.xml
deleted file mode 100644
index db452853d2..0000000000
--- a/L2ClientDat/dist/structure/dats/additionalnpcgrpparts.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/additionalsoulshoteffect.xml b/L2ClientDat/dist/structure/dats/additionalsoulshoteffect.xml
deleted file mode 100644
index a3545dc23e..0000000000
--- a/L2ClientDat/dist/structure/dats/additionalsoulshoteffect.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/alchemydata.xml b/L2ClientDat/dist/structure/dats/alchemydata.xml
deleted file mode 100644
index 07892361e2..0000000000
--- a/L2ClientDat/dist/structure/dats/alchemydata.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/alterskilldata.xml b/L2ClientDat/dist/structure/dats/alterskilldata.xml
deleted file mode 100644
index 2b3cc56b75..0000000000
--- a/L2ClientDat/dist/structure/dats/alterskilldata.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/animationcombo.xml b/L2ClientDat/dist/structure/dats/animationcombo.xml
deleted file mode 100644
index b83b0c4052..0000000000
--- a/L2ClientDat/dist/structure/dats/animationcombo.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/armorgrp.xml b/L2ClientDat/dist/structure/dats/armorgrp.xml
deleted file mode 100644
index afee353f73..0000000000
--- a/L2ClientDat/dist/structure/dats/armorgrp.xml
+++ /dev/null
@@ -1,726 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/attendancestamp.xml b/L2ClientDat/dist/structure/dats/attendancestamp.xml
deleted file mode 100644
index 08b86c9d12..0000000000
--- a/L2ClientDat/dist/structure/dats/attendancestamp.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/castlename.xml b/L2ClientDat/dist/structure/dats/castlename.xml
deleted file mode 100644
index f5a5df2074..0000000000
--- a/L2ClientDat/dist/structure/dats/castlename.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/charcreategrp.xml b/L2ClientDat/dist/structure/dats/charcreategrp.xml
deleted file mode 100644
index de2e9a590f..0000000000
--- a/L2ClientDat/dist/structure/dats/charcreategrp.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/chargrp.xml b/L2ClientDat/dist/structure/dats/chargrp.xml
deleted file mode 100644
index d54dc96baf..0000000000
--- a/L2ClientDat/dist/structure/dats/chargrp.xml
+++ /dev/null
@@ -1,337 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/classinfo.xml b/L2ClientDat/dist/structure/dats/classinfo.xml
deleted file mode 100644
index 2b50488f55..0000000000
--- a/L2ClientDat/dist/structure/dats/classinfo.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/colorexgrp.xml b/L2ClientDat/dist/structure/dats/colorexgrp.xml
deleted file mode 100644
index 16d2d4b78a..0000000000
--- a/L2ClientDat/dist/structure/dats/colorexgrp.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/colorexname.xml b/L2ClientDat/dist/structure/dats/colorexname.xml
deleted file mode 100644
index 2f444e0d5a..0000000000
--- a/L2ClientDat/dist/structure/dats/colorexname.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/combinationitemdata.xml b/L2ClientDat/dist/structure/dats/combinationitemdata.xml
deleted file mode 100644
index 0415c64425..0000000000
--- a/L2ClientDat/dist/structure/dats/combinationitemdata.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/L2ClientDat/dist/structure/dats/commandname.xml b/L2ClientDat/dist/structure/dats/commandname.xml
deleted file mode 100644
index 9a53aabc45..0000000000
--- a/L2ClientDat/dist/structure/dats/commandname.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/credit.xml b/L2ClientDat/dist/structure/dats/credit.xml
deleted file mode 100644
index a7913a4e1c..0000000000
--- a/L2ClientDat/dist/structure/dats/credit.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/deconpcdata_client.xml b/L2ClientDat/dist/structure/dats/deconpcdata_client.xml
deleted file mode 100644
index d6d3e5fee5..0000000000
--- a/L2ClientDat/dist/structure/dats/deconpcdata_client.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/dualcasttypedata.xml b/L2ClientDat/dist/structure/dats/dualcasttypedata.xml
deleted file mode 100644
index 35e74b9165..0000000000
--- a/L2ClientDat/dist/structure/dats/dualcasttypedata.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/dynamiccontentsname.xml b/L2ClientDat/dist/structure/dats/dynamiccontentsname.xml
deleted file mode 100644
index e0fa9cea6d..0000000000
--- a/L2ClientDat/dist/structure/dats/dynamiccontentsname.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/enchantedweaponfloweffectdata.xml b/L2ClientDat/dist/structure/dats/enchantedweaponfloweffectdata.xml
deleted file mode 100644
index 31bdf1bcc6..0000000000
--- a/L2ClientDat/dist/structure/dats/enchantedweaponfloweffectdata.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/enchantstatbonus.xml b/L2ClientDat/dist/structure/dats/enchantstatbonus.xml
deleted file mode 100644
index c6a201081a..0000000000
--- a/L2ClientDat/dist/structure/dats/enchantstatbonus.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/ensoul_fee_client.xml b/L2ClientDat/dist/structure/dats/ensoul_fee_client.xml
deleted file mode 100644
index 763205feb8..0000000000
--- a/L2ClientDat/dist/structure/dats/ensoul_fee_client.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/ensoul_option_client.xml b/L2ClientDat/dist/structure/dats/ensoul_option_client.xml
deleted file mode 100644
index 4af0de8ca8..0000000000
--- a/L2ClientDat/dist/structure/dats/ensoul_option_client.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/ensoul_stone_client.xml b/L2ClientDat/dist/structure/dats/ensoul_stone_client.xml
deleted file mode 100644
index 13848821d1..0000000000
--- a/L2ClientDat/dist/structure/dats/ensoul_stone_client.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/entereventgrp.xml b/L2ClientDat/dist/structure/dats/entereventgrp.xml
deleted file mode 100644
index bee7a1c002..0000000000
--- a/L2ClientDat/dist/structure/dats/entereventgrp.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/etcitemgrp.xml b/L2ClientDat/dist/structure/dats/etcitemgrp.xml
deleted file mode 100644
index 2f8b6041a9..0000000000
--- a/L2ClientDat/dist/structure/dats/etcitemgrp.xml
+++ /dev/null
@@ -1,390 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/eula.xml b/L2ClientDat/dist/structure/dats/eula.xml
deleted file mode 100644
index 44992b10cd..0000000000
--- a/L2ClientDat/dist/structure/dats/eula.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/eventcontentsgoalname.xml b/L2ClientDat/dist/structure/dats/eventcontentsgoalname.xml
deleted file mode 100644
index 68d4a2cb4a..0000000000
--- a/L2ClientDat/dist/structure/dats/eventcontentsgoalname.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/eventcontentsname.xml b/L2ClientDat/dist/structure/dats/eventcontentsname.xml
deleted file mode 100644
index a0c273f80a..0000000000
--- a/L2ClientDat/dist/structure/dats/eventcontentsname.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/eventlookchange.xml b/L2ClientDat/dist/structure/dats/eventlookchange.xml
deleted file mode 100644
index eac39df353..0000000000
--- a/L2ClientDat/dist/structure/dats/eventlookchange.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/exceptionminimapdata.xml b/L2ClientDat/dist/structure/dats/exceptionminimapdata.xml
deleted file mode 100644
index dd9843e96e..0000000000
--- a/L2ClientDat/dist/structure/dats/exceptionminimapdata.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/faceexgrp.xml b/L2ClientDat/dist/structure/dats/faceexgrp.xml
deleted file mode 100644
index 48194d5572..0000000000
--- a/L2ClientDat/dist/structure/dats/faceexgrp.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/faceexname.xml b/L2ClientDat/dist/structure/dats/faceexname.xml
deleted file mode 100644
index 903b81c555..0000000000
--- a/L2ClientDat/dist/structure/dats/faceexname.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/factionname.xml b/L2ClientDat/dist/structure/dats/factionname.xml
deleted file mode 100644
index 54e665844e..0000000000
--- a/L2ClientDat/dist/structure/dats/factionname.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/flashconfig.xml b/L2ClientDat/dist/structure/dats/flashconfig.xml
deleted file mode 100644
index 4f43b4e637..0000000000
--- a/L2ClientDat/dist/structure/dats/flashconfig.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/flymovename.xml b/L2ClientDat/dist/structure/dats/flymovename.xml
deleted file mode 100644
index 794b0ff89a..0000000000
--- a/L2ClientDat/dist/structure/dats/flymovename.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/fullarmorenchanteffectdata.xml b/L2ClientDat/dist/structure/dats/fullarmorenchanteffectdata.xml
deleted file mode 100644
index 122b5ee9cd..0000000000
--- a/L2ClientDat/dist/structure/dats/fullarmorenchanteffectdata.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/gamedatabase.xml b/L2ClientDat/dist/structure/dats/gamedatabase.xml
deleted file mode 100644
index af4b4f4ceb..0000000000
--- a/L2ClientDat/dist/structure/dats/gamedatabase.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/gametip.xml b/L2ClientDat/dist/structure/dats/gametip.xml
deleted file mode 100644
index a66ed7f124..0000000000
--- a/L2ClientDat/dist/structure/dats/gametip.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/goodsicon.xml b/L2ClientDat/dist/structure/dats/goodsicon.xml
deleted file mode 100644
index 23f86cf4de..0000000000
--- a/L2ClientDat/dist/structure/dats/goodsicon.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/hairaccessorylocgrp.xml b/L2ClientDat/dist/structure/dats/hairaccessorylocgrp.xml
deleted file mode 100644
index dc1b54b374..0000000000
--- a/L2ClientDat/dist/structure/dats/hairaccessorylocgrp.xml
+++ /dev/null
@@ -1,195 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/hairexgrp.xml b/L2ClientDat/dist/structure/dats/hairexgrp.xml
deleted file mode 100644
index f35f0d792f..0000000000
--- a/L2ClientDat/dist/structure/dats/hairexgrp.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/hairexname.xml b/L2ClientDat/dist/structure/dats/hairexname.xml
deleted file mode 100644
index 180a24b05e..0000000000
--- a/L2ClientDat/dist/structure/dats/hairexname.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/hennagrp.xml b/L2ClientDat/dist/structure/dats/hennagrp.xml
deleted file mode 100644
index 062812c2f5..0000000000
--- a/L2ClientDat/dist/structure/dats/hennagrp.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/huntingzone.xml b/L2ClientDat/dist/structure/dats/huntingzone.xml
deleted file mode 100644
index 264e523a9f..0000000000
--- a/L2ClientDat/dist/structure/dats/huntingzone.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/idcname.xml b/L2ClientDat/dist/structure/dats/idcname.xml
deleted file mode 100644
index 797dd53b8d..0000000000
--- a/L2ClientDat/dist/structure/dats/idcname.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/instantzonedata.xml b/L2ClientDat/dist/structure/dats/instantzonedata.xml
deleted file mode 100644
index 59028da4dd..0000000000
--- a/L2ClientDat/dist/structure/dats/instantzonedata.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/item_baseinfo.xml b/L2ClientDat/dist/structure/dats/item_baseinfo.xml
deleted file mode 100644
index 1f87233ffa..0000000000
--- a/L2ClientDat/dist/structure/dats/item_baseinfo.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/itemname.xml b/L2ClientDat/dist/structure/dats/itemname.xml
deleted file mode 100644
index 0ec1b04ae1..0000000000
--- a/L2ClientDat/dist/structure/dats/itemname.xml
+++ /dev/null
@@ -1,271 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/itemstatdata.xml b/L2ClientDat/dist/structure/dats/itemstatdata.xml
deleted file mode 100644
index 0f0bd0f400..0000000000
--- a/L2ClientDat/dist/structure/dats/itemstatdata.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/l2gamedataname.xml b/L2ClientDat/dist/structure/dats/l2gamedataname.xml
deleted file mode 100644
index 9560ae0336..0000000000
--- a/L2ClientDat/dist/structure/dats/l2gamedataname.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/logongrp.xml b/L2ClientDat/dist/structure/dats/logongrp.xml
deleted file mode 100644
index 08065eaad6..0000000000
--- a/L2ClientDat/dist/structure/dats/logongrp.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/lollycubedata.xml b/L2ClientDat/dist/structure/dats/lollycubedata.xml
deleted file mode 100644
index bd36d51f38..0000000000
--- a/L2ClientDat/dist/structure/dats/lollycubedata.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/mantleexception.xml b/L2ClientDat/dist/structure/dats/mantleexception.xml
deleted file mode 100644
index 86caf155bb..0000000000
--- a/L2ClientDat/dist/structure/dats/mantleexception.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/minimapregion.xml b/L2ClientDat/dist/structure/dats/minimapregion.xml
deleted file mode 100644
index 364adfb802..0000000000
--- a/L2ClientDat/dist/structure/dats/minimapregion.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/mobskillanimgrp.xml b/L2ClientDat/dist/structure/dats/mobskillanimgrp.xml
deleted file mode 100644
index cc77d44e77..0000000000
--- a/L2ClientDat/dist/structure/dats/mobskillanimgrp.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/monsterbook_client.xml b/L2ClientDat/dist/structure/dats/monsterbook_client.xml
deleted file mode 100644
index 5206d48174..0000000000
--- a/L2ClientDat/dist/structure/dats/monsterbook_client.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/msconditiondata.xml b/L2ClientDat/dist/structure/dats/msconditiondata.xml
deleted file mode 100644
index 8c28d54093..0000000000
--- a/L2ClientDat/dist/structure/dats/msconditiondata.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/musicinfo.xml b/L2ClientDat/dist/structure/dats/musicinfo.xml
deleted file mode 100644
index 0db4c62043..0000000000
--- a/L2ClientDat/dist/structure/dats/musicinfo.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/npcgrp.xml b/L2ClientDat/dist/structure/dats/npcgrp.xml
deleted file mode 100644
index 0ab32fbef4..0000000000
--- a/L2ClientDat/dist/structure/dats/npcgrp.xml
+++ /dev/null
@@ -1,710 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/npcname.xml b/L2ClientDat/dist/structure/dats/npcname.xml
deleted file mode 100644
index ca67ac33fe..0000000000
--- a/L2ClientDat/dist/structure/dats/npcname.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/npcstring.xml b/L2ClientDat/dist/structure/dats/npcstring.xml
deleted file mode 100644
index 95996cbbee..0000000000
--- a/L2ClientDat/dist/structure/dats/npcstring.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/npcteleporter.xml b/L2ClientDat/dist/structure/dats/npcteleporter.xml
deleted file mode 100644
index 0daafc7652..0000000000
--- a/L2ClientDat/dist/structure/dats/npcteleporter.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/nservice_topping_buff.xml b/L2ClientDat/dist/structure/dats/nservice_topping_buff.xml
deleted file mode 100644
index 8bf5a090be..0000000000
--- a/L2ClientDat/dist/structure/dats/nservice_topping_buff.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/obscene.xml b/L2ClientDat/dist/structure/dats/obscene.xml
deleted file mode 100644
index efe56ee14b..0000000000
--- a/L2ClientDat/dist/structure/dats/obscene.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/onedayreward.xml b/L2ClientDat/dist/structure/dats/onedayreward.xml
deleted file mode 100644
index 3b8b4df6d0..0000000000
--- a/L2ClientDat/dist/structure/dats/onedayreward.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/optiondata_client.xml b/L2ClientDat/dist/structure/dats/optiondata_client.xml
deleted file mode 100644
index cc1f30baf2..0000000000
--- a/L2ClientDat/dist/structure/dats/optiondata_client.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/partsave.xml b/L2ClientDat/dist/structure/dats/partsave.xml
deleted file mode 100644
index 9a501238f0..0000000000
--- a/L2ClientDat/dist/structure/dats/partsave.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/pawnanimdata.xml b/L2ClientDat/dist/structure/dats/pawnanimdata.xml
deleted file mode 100644
index ccfa1c6018..0000000000
--- a/L2ClientDat/dist/structure/dats/pawnanimdata.xml
+++ /dev/null
@@ -1,6237 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/piagreement.xml b/L2ClientDat/dist/structure/dats/piagreement.xml
deleted file mode 100644
index 107f1431c9..0000000000
--- a/L2ClientDat/dist/structure/dats/piagreement.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/posteffectdata.xml b/L2ClientDat/dist/structure/dats/posteffectdata.xml
deleted file mode 100644
index 9cad37cd27..0000000000
--- a/L2ClientDat/dist/structure/dats/posteffectdata.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/productname.xml b/L2ClientDat/dist/structure/dats/productname.xml
deleted file mode 100644
index c8c49ef93b..0000000000
--- a/L2ClientDat/dist/structure/dats/productname.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/questmarkconditiondata.xml b/L2ClientDat/dist/structure/dats/questmarkconditiondata.xml
deleted file mode 100644
index a2696a60b5..0000000000
--- a/L2ClientDat/dist/structure/dats/questmarkconditiondata.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/questname.xml b/L2ClientDat/dist/structure/dats/questname.xml
deleted file mode 100644
index ba03d83b6a..0000000000
--- a/L2ClientDat/dist/structure/dats/questname.xml
+++ /dev/null
@@ -1,276 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/raiddata.xml b/L2ClientDat/dist/structure/dats/raiddata.xml
deleted file mode 100644
index ef54827175..0000000000
--- a/L2ClientDat/dist/structure/dats/raiddata.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/recipe-c.xml b/L2ClientDat/dist/structure/dats/recipe-c.xml
deleted file mode 100644
index 019aa9d424..0000000000
--- a/L2ClientDat/dist/structure/dats/recipe-c.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/recipe.xml b/L2ClientDat/dist/structure/dats/recipe.xml
deleted file mode 100644
index bc6d616507..0000000000
--- a/L2ClientDat/dist/structure/dats/recipe.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/ridedata.xml b/L2ClientDat/dist/structure/dats/ridedata.xml
deleted file mode 100644
index 05d8865e0d..0000000000
--- a/L2ClientDat/dist/structure/dats/ridedata.xml
+++ /dev/null
@@ -1,242 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/sceneplayerdata.xml b/L2ClientDat/dist/structure/dats/sceneplayerdata.xml
deleted file mode 100644
index 229b027881..0000000000
--- a/L2ClientDat/dist/structure/dats/sceneplayerdata.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/servername.xml b/L2ClientDat/dist/structure/dats/servername.xml
deleted file mode 100644
index fe03c6543d..0000000000
--- a/L2ClientDat/dist/structure/dats/servername.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/setitemgrp.xml b/L2ClientDat/dist/structure/dats/setitemgrp.xml
deleted file mode 100644
index d1fc551ac6..0000000000
--- a/L2ClientDat/dist/structure/dats/setitemgrp.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/shortcutalias.xml b/L2ClientDat/dist/structure/dats/shortcutalias.xml
deleted file mode 100644
index 0a9e648df3..0000000000
--- a/L2ClientDat/dist/structure/dats/shortcutalias.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/shortcutregisterdata.xml b/L2ClientDat/dist/structure/dats/shortcutregisterdata.xml
deleted file mode 100644
index 85a3830991..0000000000
--- a/L2ClientDat/dist/structure/dats/shortcutregisterdata.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/shuttledata.xml b/L2ClientDat/dist/structure/dats/shuttledata.xml
deleted file mode 100644
index d3ad276453..0000000000
--- a/L2ClientDat/dist/structure/dats/shuttledata.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/skillgrp.xml b/L2ClientDat/dist/structure/dats/skillgrp.xml
deleted file mode 100644
index b94f7d3341..0000000000
--- a/L2ClientDat/dist/structure/dats/skillgrp.xml
+++ /dev/null
@@ -1,409 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/skillname.xml b/L2ClientDat/dist/structure/dats/skillname.xml
deleted file mode 100644
index 9381e31033..0000000000
--- a/L2ClientDat/dist/structure/dats/skillname.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/skillsoundgrp.xml b/L2ClientDat/dist/structure/dats/skillsoundgrp.xml
deleted file mode 100644
index 19b98d406f..0000000000
--- a/L2ClientDat/dist/structure/dats/skillsoundgrp.xml
+++ /dev/null
@@ -1,248 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/skillsoundsource.xml b/L2ClientDat/dist/structure/dats/skillsoundsource.xml
deleted file mode 100644
index 2f853957cb..0000000000
--- a/L2ClientDat/dist/structure/dats/skillsoundsource.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/staticobject.xml b/L2ClientDat/dist/structure/dats/staticobject.xml
deleted file mode 100644
index 3ff629dd6a..0000000000
--- a/L2ClientDat/dist/structure/dats/staticobject.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/statisticname.xml b/L2ClientDat/dist/structure/dats/statisticname.xml
deleted file mode 100644
index 81f79950ee..0000000000
--- a/L2ClientDat/dist/structure/dats/statisticname.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/symbolname.xml b/L2ClientDat/dist/structure/dats/symbolname.xml
deleted file mode 100644
index 45e0f06a5d..0000000000
--- a/L2ClientDat/dist/structure/dats/symbolname.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/sysstring.xml b/L2ClientDat/dist/structure/dats/sysstring.xml
deleted file mode 100644
index 95996cbbee..0000000000
--- a/L2ClientDat/dist/structure/dats/sysstring.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/systemmsg.xml b/L2ClientDat/dist/structure/dats/systemmsg.xml
deleted file mode 100644
index 13a0072f0b..0000000000
--- a/L2ClientDat/dist/structure/dats/systemmsg.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/timelimit_name.xml b/L2ClientDat/dist/structure/dats/timelimit_name.xml
deleted file mode 100644
index 4dad3a5141..0000000000
--- a/L2ClientDat/dist/structure/dats/timelimit_name.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/transformdata.xml b/L2ClientDat/dist/structure/dats/transformdata.xml
deleted file mode 100644
index 7cebe24d8b..0000000000
--- a/L2ClientDat/dist/structure/dats/transformdata.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/tutorialname.xml b/L2ClientDat/dist/structure/dats/tutorialname.xml
deleted file mode 100644
index 84624a574c..0000000000
--- a/L2ClientDat/dist/structure/dats/tutorialname.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/usmmoviedata.xml b/L2ClientDat/dist/structure/dats/usmmoviedata.xml
deleted file mode 100644
index 9bf365eb8b..0000000000
--- a/L2ClientDat/dist/structure/dats/usmmoviedata.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/variationeffectgrp.xml b/L2ClientDat/dist/structure/dats/variationeffectgrp.xml
deleted file mode 100644
index f10a7abe16..0000000000
--- a/L2ClientDat/dist/structure/dats/variationeffectgrp.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/vehiclepartsgrp.xml b/L2ClientDat/dist/structure/dats/vehiclepartsgrp.xml
deleted file mode 100644
index 8373436610..0000000000
--- a/L2ClientDat/dist/structure/dats/vehiclepartsgrp.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/warningnotice.xml b/L2ClientDat/dist/structure/dats/warningnotice.xml
deleted file mode 100644
index f3deeae5c4..0000000000
--- a/L2ClientDat/dist/structure/dats/warningnotice.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/weaponenchanteffectdata.xml b/L2ClientDat/dist/structure/dats/weaponenchanteffectdata.xml
deleted file mode 100644
index bfec7f742b..0000000000
--- a/L2ClientDat/dist/structure/dats/weaponenchanteffectdata.xml
+++ /dev/null
@@ -1,261 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/weapongrp.xml b/L2ClientDat/dist/structure/dats/weapongrp.xml
deleted file mode 100644
index 05834160df..0000000000
--- a/L2ClientDat/dist/structure/dats/weapongrp.xml
+++ /dev/null
@@ -1,1005 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/dats/zonename.xml b/L2ClientDat/dist/structure/dats/zonename.xml
deleted file mode 100644
index 05cfcd6865..0000000000
--- a/L2ClientDat/dist/structure/dats/zonename.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/L2ClientDat/dist/structure/format/SkillNameFormat.java b/L2ClientDat/dist/structure/format/SkillNameFormat.java
deleted file mode 100644
index 1741d812ef..0000000000
--- a/L2ClientDat/dist/structure/format/SkillNameFormat.java
+++ /dev/null
@@ -1,111 +0,0 @@
-import l2god.listeners.FormatListener;
-import l2god.util.Util;
-
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class SkillNameFormat implements FormatListener
-{
- private static final Pattern pattern = Pattern.compile("\\bskill_txt_begin\\b(.*?)\\bskill_txt_end\\b", Pattern.DOTALL);
- private static final Pattern pattern2 = Pattern.compile("\\bskill_begin\\b(.*?)\\bskill_end\\b", Pattern.DOTALL);
-
- @Override
- public String decode(String str)
- {
- Matcher m = pattern.matcher(str);
- Map indexes = new HashMap<>();
- while(m.find())
- {
- Map params = Util.stringToMap(m.group(1));
- String name = params.get("name");
- indexes.put(Integer.valueOf(params.get("index")), name.substring(1, name.length() - 1));
- }
-
- StringBuilder builder = new StringBuilder();
- Matcher m2 = pattern2.matcher(str);
- while(m2.find())
- {
- Map params = Util.stringToMap(m2.group(1));
- setNameByIndex(indexes, params, "name");
- setNameByIndex(indexes, params, "desc");
- setNameByIndex(indexes, params, "desc_param");
- setNameByIndex(indexes, params, "enchant_name");
- setNameByIndex(indexes, params, "enchant_name_param");
- setNameByIndex(indexes, params, "enchant_desc");
- setNameByIndex(indexes, params, "enchant_desc_param");
-
- builder.append("skill_begin\t").append(Util.mapToString(params)).append("skill_end").append("\r\n");
- }
-
- return builder.toString();
- }
-
- @Override
- public String encode(String str)
- {
- Map indexes = new LinkedHashMap<>();
- Map sorted = new TreeMap<>();
-
- Matcher m2 = pattern2.matcher(str);
- while(m2.find())
- {
- Map params = Util.stringToMap(m2.group(1));
- setIndexByName(indexes, params, "name");
- setIndexByName(indexes, params, "desc");
- setIndexByName(indexes, params, "desc_param");
- setIndexByName(indexes, params, "enchant_name");
- setIndexByName(indexes, params, "enchant_name_param");
- setIndexByName(indexes, params, "enchant_desc");
- setIndexByName(indexes, params, "enchant_desc_param");
-
- String result = "skill_begin\t" + Util.mapToString(params) + "skill_end\r\n";
-
- int id = Integer.parseInt(params.get("skill_id"));
- int level = Integer.parseInt(params.get("skill_level"));
- int subLevel = Integer.parseInt(params.get("skill_sublevel"));
-
- sorted.put(getSkillHashCode(id, level, subLevel), result);
- }
-
- StringBuilder builder = new StringBuilder();
- for(String key : indexes.keySet())
- {
- builder.append("skill_txt_begin\tname=").append(key).append("\tindex=").append(indexes.get(key)).append("\tskill_txt_end\r\n");
- }
-
- sorted.values().forEach(builder::append);
-
- return builder.toString();
- }
-
- private void setNameByIndex(Map indexes, Map params, String paramName)
- {
- params.put(paramName, "[" + indexes.get(Integer.parseInt(params.get(paramName))) + "]");
- }
-
- private void setIndexByName(Map indexes, Map params, String paramName)
- {
- String name = params.get(paramName);
- if(indexes.containsKey(name))
- {
- params.put(paramName, indexes.get(name));
- return;
- }
-
- String index = String.valueOf(indexes.size());
- indexes.put(name, index);
- params.put(paramName, index);
- }
-
- private static long getSkillHashCode(int skillId, int skillLevel, int subLevel)
- {
- if(subLevel > 0)
- return (skillId * 4294967296L) + (subLevel * 65536) + skillLevel;
- else
- return (skillId * 65536) + skillLevel;
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/L2ClientDat.java b/L2ClientDat/java/com/l2jmobius/L2ClientDat.java
deleted file mode 100644
index 589a643d6d..0000000000
--- a/L2ClientDat/java/com/l2jmobius/L2ClientDat.java
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.EventQueue;
-import java.awt.Font;
-import java.awt.event.ActionEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.PrintWriter;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JFileChooser;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JSplitPane;
-import javax.swing.UIManager;
-import javax.swing.filechooser.FileNameExtensionFilter;
-
-import com.l2jmobius.actions.MassRecryptor;
-import com.l2jmobius.actions.MassTxtPacker;
-import com.l2jmobius.actions.MassTxtUnpacker;
-import com.l2jmobius.actions.OpenDat;
-import com.l2jmobius.clientcryptor.DatFile;
-import com.l2jmobius.clientcryptor.crypt.DatCrypter;
-import com.l2jmobius.config.ConfigDebug;
-import com.l2jmobius.config.ConfigWindow;
-import com.l2jmobius.data.GameDataName;
-import com.l2jmobius.forms.JPopupTextArea;
-import com.l2jmobius.util.DebugUtil;
-import com.l2jmobius.util.Util;
-import com.l2jmobius.xml.CryptVersionParser;
-import com.l2jmobius.xml.Descriptor;
-import com.l2jmobius.xml.DescriptorParser;
-import com.l2jmobius.xml.DescriptorWriter;
-
-public class L2ClientDat extends JFrame
-{
- private static JPopupTextArea textPaneLog;
- private static JPopupTextArea textPaneMain;
- private static JComboBox jComboBoxChronicle;
- private static JComboBox jComboBoxDecrypt;
- private static JComboBox jComboBoxEncrypt;
- private static File currentFileWindow;
-
- public L2ClientDat()
- {
- setTitle("L2ClientDat decoder");
- setMinimumSize(new Dimension(1000, 600));
- this.setSize(new Dimension(ConfigWindow.WINDOW_WIDTH, ConfigWindow.WINDOW_HEIGHT));
- getContentPane().setLayout(new BorderLayout());
- setDefaultCloseOperation(3);
- setLocationRelativeTo(null);
- addWindowListener(new WindowAdapter()
- {
- @Override
- public void windowClosing(WindowEvent evt)
- {
- ConfigWindow.save("WINDOW_HEIGHT", String.valueOf(L2ClientDat.this.getHeight()));
- ConfigWindow.save("WINDOW_WIDTH", String.valueOf(L2ClientDat.this.getWidth()));
- System.exit(0);
- }
- });
- JPanel buttonPane = new JPanel();
- buttonPane.setLayout(new BorderLayout());
- JPanel buttonPane0 = new JPanel();
- JLabel structureLabel = new JLabel("structure:");
- buttonPane0.add(structureLabel);
- jComboBoxChronicle = new JComboBox<>();
- jComboBoxChronicle.setModel(new DefaultComboBoxModel<>(Util.getFilesNames("./structure/", ".xml")));
- jComboBoxChronicle.setSelectedItem(ConfigWindow.CURRENT_CHRONICLE);
- jComboBoxChronicle.addActionListener(e -> saveComboBox(jComboBoxChronicle, "CURRENT_CHRONICLE"));
- buttonPane0.add(jComboBoxChronicle);
- JLabel decryptLabel = new JLabel("decrypt:");
- buttonPane0.add(decryptLabel);
- jComboBoxDecrypt = new JComboBox<>();
- jComboBoxDecrypt.setModel(new DefaultComboBoxModel<>(CryptVersionParser.getInstance().getDecryptKeys().keySet().toArray(new String[CryptVersionParser.getInstance().getDecryptKeys().keySet().size()])));
- jComboBoxDecrypt.setSelectedItem(ConfigWindow.CURRENT_DECRYPT);
- jComboBoxDecrypt.addActionListener(e -> saveComboBox(jComboBoxDecrypt, "CURRENT_DECRYPT"));
- buttonPane0.add(jComboBoxDecrypt);
- JLabel encryptLabel = new JLabel("encrypt:");
- buttonPane0.add(encryptLabel);
- jComboBoxEncrypt = new JComboBox<>();
- jComboBoxEncrypt.setModel(new DefaultComboBoxModel<>(CryptVersionParser.getInstance().getEncryptKey().keySet().toArray(new String[CryptVersionParser.getInstance().getDecryptKeys().keySet().size()])));
- jComboBoxEncrypt.setSelectedItem(ConfigWindow.CURRENT_ENCRYPT);
- jComboBoxEncrypt.addActionListener(e -> saveComboBox(jComboBoxEncrypt, "CURRENT_ENCRYPT"));
- buttonPane0.add(jComboBoxEncrypt);
- buttonPane.add(buttonPane0, "First");
- JPanel buttonPane1 = new JPanel();
- JButton open = new JButton();
- open.setText("Open");
- open.addActionListener(this::openSelectFileWindow);
- buttonPane1.add(open);
- JButton save = new JButton();
- save.setText("Save txt");
- save.addActionListener(this::saveActionPerformed);
- buttonPane1.add(save);
- JButton saveAs = new JButton();
- saveAs.setText("Save dat");
- saveAs.addActionListener(this::saveAsActionPerformed);
- buttonPane1.add(saveAs);
- JButton massTxtUnpack = new JButton();
- massTxtUnpack.setText("Extract all to txt");
- massTxtUnpack.addActionListener(this::massTxtUnpackActionPerformed);
- buttonPane1.add(massTxtUnpack);
- JButton massTxtPack = new JButton();
- massTxtPack.setText("Download all dat");
- massTxtPack.addActionListener(this::massTxtPackActionPerformed);
- buttonPane1.add(massTxtPack);
- JButton massRecrypt = new JButton();
- massRecrypt.setText("Patch dat");
- massRecrypt.addActionListener(this::massRecryptActionPerformed);
- buttonPane1.add(massRecrypt);
- buttonPane.add(buttonPane1);
- JSplitPane jsp = new JSplitPane(0, false);
- jsp.setResizeWeight(0.7);
- jsp.setOneTouchExpandable(true);
- textPaneMain = new JPopupTextArea();
- textPaneMain.setBackground(new Color(41, 49, 52));
- textPaneMain.setForeground(Color.WHITE);
- textPaneMain.setFont(new Font("Verdana", 1, 12));
- JScrollPane jScrollPane1 = new JScrollPane();
- jScrollPane1.setAutoscrolls(true);
- jScrollPane1.setViewportView(textPaneMain);
- jsp.setTopComponent(jScrollPane1);
- textPaneLog = new JPopupTextArea();
- textPaneLog.setBackground(new Color(41, 49, 52));
- textPaneLog.setForeground(Color.GREEN);
- textPaneLog.setEditable(false);
- JScrollPane jScrollPane2 = new JScrollPane();
- jScrollPane2.setViewportView(textPaneLog);
- jScrollPane2.setAutoscrolls(true);
- jsp.setBottomComponent(jScrollPane2);
- getContentPane().add(buttonPane, "First");
- getContentPane().add(jsp);
- pack();
- setVisible(true);
- }
-
- private void massTxtPackActionPerformed(ActionEvent evt)
- {
- JFileChooser fileopen = new JFileChooser();
- fileopen.setFileSelectionMode(1);
- fileopen.setAcceptAllFileFilterUsed(false);
- fileopen.setCurrentDirectory(new File(ConfigWindow.FILE_OPEN_CURRENT_DIRECTORY_PACK));
- fileopen.setPreferredSize(new Dimension(600, 600));
- int ret = fileopen.showDialog(null, "Open");
- if (ret == 0)
- {
- currentFileWindow = fileopen.getSelectedFile();
- ConfigWindow.save("FILE_OPEN_CURRENT_DIRECTORY_PACK", currentFileWindow.getPath());
- addLogConsole("---------------------------------------", true);
- addLogConsole("selected folder: " + currentFileWindow.getPath(), true);
- try
- {
- MassTxtPacker.getInstance().pack(String.valueOf(jComboBoxChronicle.getSelectedItem()), currentFileWindow.getPath(), CryptVersionParser.getInstance().getEncryptKey(String.valueOf(jComboBoxEncrypt.getSelectedItem())));
- }
- catch (Exception ex)
- {
- Logger.getLogger(L2ClientDat.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
-
- private void massTxtUnpackActionPerformed(ActionEvent evt)
- {
- JFileChooser fileopen = new JFileChooser();
- fileopen.setFileSelectionMode(1);
- fileopen.setAcceptAllFileFilterUsed(false);
- fileopen.setCurrentDirectory(new File(ConfigWindow.FILE_OPEN_CURRENT_DIRECTORY_UNPACK));
- fileopen.setPreferredSize(new Dimension(600, 600));
- int ret = fileopen.showDialog(null, "Open");
- if (ret == 0)
- {
- currentFileWindow = fileopen.getSelectedFile();
- ConfigWindow.save("FILE_OPEN_CURRENT_DIRECTORY_UNPACK", currentFileWindow.getPath());
- addLogConsole("---------------------------------------", true);
- addLogConsole("selected folder: " + currentFileWindow.getPath(), true);
- try
- {
- MassTxtUnpacker.getInstance().unpack(String.valueOf(jComboBoxChronicle.getSelectedItem()), currentFileWindow.getPath(), CryptVersionParser.getInstance().getDecryptKey(String.valueOf(jComboBoxDecrypt.getSelectedItem())));
- }
- catch (Exception ex)
- {
- Logger.getLogger(L2ClientDat.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
-
- private void massRecryptActionPerformed(ActionEvent evt)
- {
- JFileChooser fileopen = new JFileChooser();
- fileopen.setFileSelectionMode(1);
- fileopen.setAcceptAllFileFilterUsed(false);
- fileopen.setCurrentDirectory(new File(ConfigWindow.FILE_OPEN_CURRENT_DIRECTORY));
- fileopen.setPreferredSize(new Dimension(600, 600));
- int ret = fileopen.showDialog(null, "Open");
- if (ret == 0)
- {
- currentFileWindow = fileopen.getSelectedFile();
- ConfigWindow.save("FILE_OPEN_CURRENT_DIRECTORY", currentFileWindow.getPath());
- addLogConsole("---------------------------------------", true);
- addLogConsole("selected folder: " + currentFileWindow.getPath(), true);
- try
- {
- MassRecryptor.getInstance().recrypt(String.valueOf(jComboBoxChronicle.getSelectedItem()), currentFileWindow.getPath(), CryptVersionParser.getInstance().getDecryptKey(String.valueOf(jComboBoxDecrypt.getSelectedItem())), CryptVersionParser.getInstance().getEncryptKey(String.valueOf(jComboBoxEncrypt.getSelectedItem())));
- }
- catch (Exception ex)
- {
- Logger.getLogger(L2ClientDat.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
-
- private void openSelectFileWindow(ActionEvent evt)
- {
- textPaneMain.removeAll();
- JFileChooser fileopen = new JFileChooser();
- fileopen.setFileSelectionMode(0);
- fileopen.setAcceptAllFileFilterUsed(false);
- fileopen.setFileFilter(new FileNameExtensionFilter(".dat, .ini, .txt, .htm", "dat", "ini", "txt", "htm"));
- fileopen.setSelectedFile(new File(ConfigWindow.LAST_FILE_SELECTED));
- fileopen.setPreferredSize(new Dimension(600, 600));
- int ret = fileopen.showDialog(null, "Open");
- if (ret == 0)
- {
- currentFileWindow = fileopen.getSelectedFile();
- ConfigWindow.save("LAST_FILE_SELECTED", currentFileWindow.getAbsolutePath());
- addLogConsole("---------------------------------------", true);
- addLogConsole("Open file: " + currentFileWindow.getName(), true);
- try
- {
- OpenDat.start(String.valueOf(jComboBoxChronicle.getSelectedItem()), currentFileWindow, currentFileWindow.getName(), CryptVersionParser.getInstance().getDecryptKey(String.valueOf(jComboBoxDecrypt.getSelectedItem())));
- }
- catch (Exception ex)
- {
- Logger.getLogger(L2ClientDat.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
-
- private void saveActionPerformed(ActionEvent evt)
- {
- JFileChooser fileSave = new JFileChooser();
- fileSave.setCurrentDirectory(new File(ConfigWindow.FILE_SAVE_CURRENT_DIRECTORY));
- if (currentFileWindow != null)
- {
- fileSave.setSelectedFile(new File(currentFileWindow.getName().split("\\.")[0] + ".txt"));
- fileSave.setFileFilter(new FileNameExtensionFilter(".txt", "txt"));
- fileSave.setAcceptAllFileFilterUsed(false);
- fileSave.setPreferredSize(new Dimension(600, 600));
- int ret = fileSave.showSaveDialog(null);
- if (ret == 0)
- {
- File f = fileSave.getSelectedFile();
- try
- {
- PrintWriter out = new PrintWriter(new FileOutputStream(f.getPath()), true);
- ConfigWindow.save("FILE_SAVE_CURRENT_DIRECTORY", f.getParentFile().toString());
- out.print(textPaneMain.getText());
- out.close();
- }
- catch (Exception out)
- {
- // empty catch block
- }
- addLogConsole("---------------------------------------", true);
- addLogConsole("Saved: " + f.getPath(), true);
- }
- }
- else
- {
- addLogConsole("No open file!", true);
- }
- }
-
- /*
- * Enabled aggressive block sorting Enabled unnecessary exception pruning Enabled aggressive exception aggregation
- */
- private void saveAsActionPerformed(ActionEvent evt)
- {
- if (currentFileWindow == null)
- {
- addLogConsole("Error saving dat. No file name.", true);
- return;
- }
- byte[] buff = null;
- DatCrypter crypter = null;
- if (currentFileWindow.getName().endsWith(".dat") || currentFileWindow.getName().endsWith(".txt"))
- {
- try
- {
- Descriptor desc = DescriptorParser.getInstance().findDescriptorForFile(String.valueOf(jComboBoxChronicle.getSelectedItem()), currentFileWindow.getName().replace("txt", "dat"));
- if (desc != null)
- {
- crypter = CryptVersionParser.getInstance().getEncryptKey(String.valueOf(jComboBoxEncrypt.getSelectedItem()));
- buff = DescriptorWriter.parseData(currentFileWindow, crypter, desc, textPaneMain.getText());
- GameDataName.getInstance().checkAndUpdate(currentFileWindow.getParent(), crypter);
- }
- addLogConsole("Not found the structure of the file: " + currentFileWindow.getName(), true);
- }
- catch (Exception e)
- {
- DebugUtil.getLogger().error(e.getMessage(), e);
- return;
- }
- }
- else if (currentFileWindow.getName().endsWith(".ini"))
- {
- crypter = CryptVersionParser.getInstance().getEncryptKey(String.valueOf(jComboBoxEncrypt.getSelectedItem()));
- buff = textPaneMain.getText().getBytes();
- }
- if (buff == null)
- {
- addLogConsole("buff == null.", true);
- return;
- }
- try
- {
- if (ConfigDebug.ENCRYPT && (crypter != null))
- {
- DatFile.encrypt(buff, currentFileWindow.getPath(), crypter);
- }
- }
- catch (Exception e)
- {
- DebugUtil.getLogger().error(e.getMessage(), e);
- return;
- }
- addLogConsole("Packed successfully.", true);
- }
-
- private void saveComboBox(JComboBox> jComboBox, String param)
- {
- ConfigWindow.save(param, String.valueOf(jComboBox.getSelectedItem()));
- }
-
- public static void main(String[] args)
- {
- ConfigWindow.load();
- ConfigDebug.load();
- CryptVersionParser.getInstance();
- Util.compileJavaClass("./structure/format/");
- DescriptorParser.getInstance();
- try
- {
- for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels())
- {
- if (!"Nimbus".equals(info.getName()))
- {
- continue;
- }
- UIManager.setLookAndFeel(info.getClassName());
- break;
- }
- }
- catch (Exception ex)
- {
- Logger.getLogger(L2ClientDat.class.getName()).log(Level.SEVERE, null, ex);
- }
- EventQueue.invokeLater(L2ClientDat::new);
- }
-
- public static void addLogConsole(String log, boolean isLog)
- {
- if (isLog)
- {
- DebugUtil.getLogger().info(log);
- }
- textPaneLog.append(log + "\n");
- }
-
- public static void addText(String log)
- {
- textPaneMain.setText(log);
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/actions/MassRecryptor.java b/L2ClientDat/java/com/l2jmobius/actions/MassRecryptor.java
deleted file mode 100644
index 5bbd10fcf6..0000000000
--- a/L2ClientDat/java/com/l2jmobius/actions/MassRecryptor.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.actions;
-
-import java.io.File;
-import java.io.FileInputStream;
-
-import com.l2jmobius.L2ClientDat;
-import com.l2jmobius.clientcryptor.DatFile;
-import com.l2jmobius.clientcryptor.crypt.DatCrypter;
-
-public class MassRecryptor
-{
- private static final MassRecryptor _instance = new MassRecryptor();
-
- public static MassRecryptor getInstance()
- {
- return _instance;
- }
-
- public void recrypt(String chronicle, String path, DatCrypter decCrypter, DatCrypter enCrypter)
- {
- L2ClientDat.addLogConsole("Mass recrypt with using " + chronicle + " chronicles by path [" + path + "]", true);
- File baseDir = new File(path);
- if (!baseDir.exists())
- {
- L2ClientDat.addLogConsole("Directory [" + path + "] does not exists.", true);
- return;
- }
- String recryptDirPath = path + "/" + "!recrypted";
- File recryptDir = new File(recryptDirPath);
- if (!recryptDir.exists() && !recryptDir.mkdir())
- {
- L2ClientDat.addLogConsole("Cannot create recrypt directory [" + recryptDirPath + "].", true);
- return;
- }
- long startTime = System.currentTimeMillis();
- for (File file : baseDir.listFiles(pathname -> pathname.getName().endsWith(".dat") || pathname.getName().endsWith(".ini") || pathname.getName().endsWith(".htm")))
- {
- try
- {
- try (FileInputStream fis = new FileInputStream(file);)
- {
- if (fis.available() < 28)
- {
- L2ClientDat.addLogConsole(file.getName() + " The file is too small.", true);
- return;
- }
- byte[] head = new byte[28];
- fis.read(head);
- String header = new String(head, "UTF-16LE");
- if (!header.startsWith("Lineage2Ver"))
- {
- L2ClientDat.addLogConsole("File " + file.getName() + " not encrypted. Skip decrypt.", true);
- continue;
- }
- if (Integer.valueOf(header.substring(11)).intValue() != decCrypter.getCode())
- {
- L2ClientDat.addLogConsole("File " + file.getName() + " encrypted code: " + header + ". Skip decrypt.", true);
- continue;
- }
- L2ClientDat.addLogConsole("Recrypting [" + file.getName() + "]", true);
- DatFile dat = new DatFile(file.getAbsolutePath());
- dat.decrypt(decCrypter);
- DatFile.encrypt(dat.getBuff().array(), recryptDirPath + "/" + file.getName(), enCrypter);
- }
- }
- catch (Exception e)
- {
- L2ClientDat.addLogConsole(file.getName() + " Decrypt failed.", true);
- }
- }
- long diffTime = (System.currentTimeMillis() - startTime) / 1000L;
- L2ClientDat.addLogConsole("Completed. Elapsed ".concat(String.valueOf(diffTime)).concat(" sec"), true);
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/actions/MassTxtPacker.java b/L2ClientDat/java/com/l2jmobius/actions/MassTxtPacker.java
deleted file mode 100644
index d8b97fed14..0000000000
--- a/L2ClientDat/java/com/l2jmobius/actions/MassTxtPacker.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.actions;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.nio.file.Files;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.Semaphore;
-
-import com.l2jmobius.L2ClientDat;
-import com.l2jmobius.clientcryptor.DatFile;
-import com.l2jmobius.clientcryptor.crypt.DatCrypter;
-import com.l2jmobius.config.ConfigDebug;
-import com.l2jmobius.data.GameDataName;
-import com.l2jmobius.util.DebugUtil;
-import com.l2jmobius.xml.Descriptor;
-import com.l2jmobius.xml.DescriptorParser;
-import com.l2jmobius.xml.DescriptorWriter;
-import com.l2jmobius.xml.exceptions.PackDataException;
-
-public class MassTxtPacker
-{
- private static final MassTxtPacker _instance = new MassTxtPacker();
-
- public static MassTxtPacker getInstance()
- {
- return _instance;
- }
-
- public void pack(String chronicle, String path, DatCrypter crypter) throws Exception
- {
- L2ClientDat.addLogConsole("Mass packer with using " + chronicle + " chronicles by path [" + path + "]", true);
- File baseDir = new File(path);
- if (!baseDir.exists())
- {
- L2ClientDat.addLogConsole("Directory [" + path + "] does not exists.", true);
- return;
- }
- String packDirPath = path + "/" + "!packed";
- File packDir = new File(packDirPath);
- if (!packDir.exists() && !packDir.mkdir())
- {
- L2ClientDat.addLogConsole("Cannot create directory [" + packDir + "].", true);
- return;
- }
- File[] fList = baseDir.listFiles(pathname -> crypter.checkFileExtension(pathname.getName()));
- GameDataName.getInstance().clear();
- long startTime = System.currentTimeMillis();
- CountDownLatch doneSignal = new CountDownLatch(fList.length);
- Semaphore semaphore = new Semaphore(Runtime.getRuntime().availableProcessors());
- for (File file : fList)
- {
- new Thread(() ->
- {
- try
- {
- semaphore.acquire();
- L2ClientDat.addLogConsole("Packing [" + file.getName() + "]", true);
- try
- {
- byte[] buff = null;
- String name = file.getName();
- if (crypter.isUseStructure())
- {
- name = name.replace(".txt", ".dat");
- byte[] array = Files.readAllBytes(file.toPath());
- String joined = new String(array, 0, array.length, "UTF-8");
- Descriptor desc = DescriptorParser.getInstance().findDescriptorForFile(chronicle, name);
- if (desc != null)
- {
- buff = DescriptorWriter.parseData(file, crypter, desc, joined);
- }
- else
- {
- L2ClientDat.addLogConsole("Not found the structure of the file: " + file.getName(), true);
- }
- }
- else
- {
- buff = Files.readAllBytes(file.toPath());
- }
- String fResult = packDir + "/" + name;
- if (buff != null)
- {
- if (ConfigDebug.ENCRYPT)
- {
- DatFile.encrypt(buff, fResult, crypter);
- }
- else
- {
- FileOutputStream os = new FileOutputStream(fResult, false);
- os.write(buff);
- os.close();
- }
- }
- }
- catch (PackDataException e)
- {
- DebugUtil.getLogger().error(e);
- }
- catch (Exception e)
- {
- DebugUtil.getLogger().error(e.getMessage(), e);
- }
- doneSignal.countDown();
- semaphore.release();
- }
- catch (InterruptedException e)
- {
- DebugUtil.getLogger().error(e.getMessage(), e);
- }
- }).start();
- }
- doneSignal.await();
- GameDataName.getInstance().checkAndUpdate(packDir.getPath(), crypter);
- long diffTime = (System.currentTimeMillis() - startTime) / 1000L;
- L2ClientDat.addLogConsole("Completed. Elapsed ".concat(String.valueOf(diffTime)).concat(" sec"), true);
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/actions/MassTxtUnpacker.java b/L2ClientDat/java/com/l2jmobius/actions/MassTxtUnpacker.java
deleted file mode 100644
index c9cdd74a0b..0000000000
--- a/L2ClientDat/java/com/l2jmobius/actions/MassTxtUnpacker.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.actions;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-
-import com.l2jmobius.L2ClientDat;
-import com.l2jmobius.clientcryptor.DatFile;
-import com.l2jmobius.clientcryptor.crypt.DatCrypter;
-import com.l2jmobius.data.GameDataName;
-import com.l2jmobius.util.DebugUtil;
-import com.l2jmobius.xml.Descriptor;
-import com.l2jmobius.xml.DescriptorParser;
-import com.l2jmobius.xml.DescriptorReader;
-
-public class MassTxtUnpacker
-{
- private static final MassTxtUnpacker _instance = new MassTxtUnpacker();
-
- public static MassTxtUnpacker getInstance()
- {
- return _instance;
- }
-
- public void unpack(String chronicle, String path, DatCrypter decCrypter)
- {
- L2ClientDat.addLogConsole("Mass unpacker with using " + chronicle + " chronicles by path [" + path + "]", true);
- File baseDir = new File(path);
- if (!baseDir.exists())
- {
- L2ClientDat.addLogConsole("Directory [" + path + "] does not exists.", true);
- return;
- }
- String unpackDirPath = path + "/" + "!unpacked";
- File unpackDir = new File(unpackDirPath);
- if (!unpackDir.exists() && !unpackDir.mkdir())
- {
- L2ClientDat.addLogConsole("Cannot create recrypt directory [" + unpackDirPath + "].", true);
- return;
- }
- GameDataName.getInstance().clear();
- long startTime = System.currentTimeMillis();
- for (File file : baseDir.listFiles(pathname -> decCrypter.checkFileExtension(pathname.getName())))
- {
- try
- {
- try (FileInputStream fis = new FileInputStream(file);)
- {
- String name;
- String res;
- String charset;
- if (fis.available() < 28)
- {
- L2ClientDat.addLogConsole(file.getName() + " The file is too small.", true);
- continue;
- }
- byte[] head = new byte[28];
- fis.read(head);
- fis.close();
- String header = new String(head, "UTF-16LE");
- if (!header.startsWith("Lineage2Ver"))
- {
- L2ClientDat.addLogConsole("File " + file.getName() + " not encrypted. Skip decrypt.", true);
- continue;
- }
- if (Integer.valueOf(header.substring(11)).intValue() != decCrypter.getCode())
- {
- L2ClientDat.addLogConsole("File " + file.getName() + " encrypted code: " + header + ". Skip decrypt.", true);
- continue;
- }
- L2ClientDat.addLogConsole("Unpacking [" + file.getName() + "]", true);
- DatFile dat = new DatFile(file.getAbsolutePath());
- dat.decrypt(decCrypter);
- DebugUtil.save(dat.getBuff(), file);
- res = null;
- charset = "UTF-8";
- if (decCrypter.isUseStructure() && file.getName().endsWith(".dat"))
- {
- Descriptor desc = DescriptorParser.getInstance().findDescriptorForFile(chronicle, file.getName());
- try
- {
- res = DescriptorReader.getInstance().parseData(file, decCrypter, desc, dat.getBuff());
- }
- catch (Exception e23)
- {
- L2ClientDat.addLogConsole("Cannot parse [" + file.getName() + "]", true);
- }
- name = file.getName().replace(".dat", ".txt");
- }
- else
- {
- name = file.getName();
- if (file.getName().endsWith(".unr"))
- {
- name = "dec-" + name;
- }
- if (file.getName().endsWith(".htm"))
- {
- charset = "UTF-16";
- }
- try
- {
- try (FileOutputStream fos = new FileOutputStream(unpackDirPath + "/" + name);)
- {
- fos.write(dat.getBuff().array());
- }
- catch (Throwable throwable)
- {
- throw throwable;
- }
- }
- catch (UnsupportedEncodingException e3)
- {
- e3.printStackTrace();
- }
- }
- if (res == null)
- {
- continue;
- }
- try
- {
- try (PrintWriter fos = new PrintWriter(new OutputStreamWriter(new FileOutputStream(unpackDirPath + "/" + name), charset));)
- {
- fos.write(res);
- }
- catch (Throwable throwable)
- {
- throw throwable;
- }
- }
- catch (Exception e4)
- {
- DebugUtil.getLogger().error("Cannot write file.", e4);
- }
- }
- }
- catch (Exception e)
- {
- DebugUtil.getLogger().error(file.getName() + " Decrypt failed.", e);
- }
- }
- long diffTime = (System.currentTimeMillis() - startTime) / 1000L;
- L2ClientDat.addLogConsole("Completed. Elapsed ".concat(String.valueOf(diffTime)).concat(" sec"), true);
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/actions/OpenDat.java b/L2ClientDat/java/com/l2jmobius/actions/OpenDat.java
deleted file mode 100644
index 96f91fa334..0000000000
--- a/L2ClientDat/java/com/l2jmobius/actions/OpenDat.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.actions;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
-
-import com.l2jmobius.L2ClientDat;
-import com.l2jmobius.clientcryptor.DatFile;
-import com.l2jmobius.clientcryptor.crypt.DatCrypter;
-import com.l2jmobius.data.GameDataName;
-import com.l2jmobius.util.DebugUtil;
-import com.l2jmobius.xml.Descriptor;
-import com.l2jmobius.xml.DescriptorParser;
-import com.l2jmobius.xml.DescriptorReader;
-
-public class OpenDat
-{
- public static void start(String dir, File path, String name, DatCrypter crypter) throws Exception
- {
- ByteBuffer buffer;
- boolean crypt = true;
- if (!path.exists())
- {
- L2ClientDat.addLogConsole("File does not exist.", true);
- return;
- }
- if (!path.canRead())
- {
- L2ClientDat.addLogConsole("Unable to read file.", true);
- return;
- }
- FileInputStream fis = new FileInputStream(path);
- if (fis.available() < 28)
- {
- L2ClientDat.addLogConsole("The file is too small.", true);
- fis.close();
- return;
- }
- byte[] head = new byte[28];
- fis.read(head);
- String header = new String(head, "UTF-16LE");
- if (!header.startsWith("Lineage2Ver"))
- {
- L2ClientDat.addLogConsole("File " + name + " not encrypted. Skip decrypt.", true);
- crypt = false;
- }
- fis.close();
- buffer = null;
- if (crypt)
- {
- L2ClientDat.addLogConsole("File " + name + " encrypted. " + header + " decrypt ...", true);
- try
- {
- DatFile dat = new DatFile(path.getPath());
- dat.decrypt(crypter);
- buffer = dat.getBuff();
- if (buffer == null)
- {
- L2ClientDat.addLogConsole("Error decrypt file. Empty buffer.", true);
- return;
- }
- }
- catch (Exception e)
- {
- L2ClientDat.addLogConsole("Error decrypt file.", true);
- return;
- }
- DebugUtil.save(buffer, path);
- L2ClientDat.addLogConsole("Decrypt successfully.", true);
- }
- else
- {
- try
- {
- try (FileInputStream fIn = new FileInputStream(path);)
- {
- FileChannel fChan = fIn.getChannel();
- ByteBuffer mBuf = ByteBuffer.allocate((int) fChan.size());
- fChan.read(mBuf);
- buffer = mBuf;
- fChan.close();
- fIn.close();
- }
- }
- catch (IOException exc)
- {
- L2ClientDat.addLogConsole("Error reading.", true);
- }
- }
- if (name.contains(".ini") || name.contains(".txt"))
- {
- if ((buffer != null) && buffer.hasArray())
- {
- L2ClientDat.addText(new String(buffer.array(), 0, buffer.array().length, "UTF-8"));
- }
- }
- else if (name.contains(".htm"))
- {
- if ((buffer != null) && buffer.hasArray())
- {
- L2ClientDat.addText(new String(buffer.array(), 0, buffer.array().length, "UTF-16"));
- }
- }
- else if (crypter.isUseStructure())
- {
- L2ClientDat.addLogConsole("Read the file structure ...", true);
- String data = null;
- Descriptor desc = DescriptorParser.getInstance().findDescriptorForFile(dir, name);
- if ((desc != null) && (buffer != null))
- {
- buffer.position(0);
- DebugUtil.debug("Buffer size: " + buffer.limit());
- GameDataName.getInstance().clear();
- data = DescriptorReader.getInstance().parseData(path, crypter, desc, buffer);
- }
- if (data == null)
- {
- L2ClientDat.addLogConsole("Structure is not found in the directory: " + dir + " file: " + name, true);
- return;
- }
- L2ClientDat.addText(data);
- }
- L2ClientDat.addLogConsole("Completed.", true);
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/DatFile.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/DatFile.java
deleted file mode 100644
index 5d76249d7e..0000000000
--- a/L2ClientDat/java/com/l2jmobius/clientcryptor/DatFile.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.clientcryptor;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import com.l2jmobius.clientcryptor.crypt.DatCrypter;
-import com.l2jmobius.config.ConfigDebug;
-
-public class DatFile extends File
-{
- private ByteBuffer _buff;
-
- public DatFile(String pathname)
- {
- super(pathname);
- }
-
- public ByteBuffer getBuff()
- {
- return _buff;
- }
-
- public void decrypt(DatCrypter crypter) throws IOException
- {
- loadInfo(crypter);
- try
- {
- try (FileInputStream fis = new FileInputStream(this);)
- {
- crypter.unlock();
- crypter.aquire();
- fis.skip(28L);
- byte[] buff = new byte[crypter.getChunkSize(fis.available())];
- for (int len = fis.available() - crypter.getSkipSize(); len > 0; len -= fis.read(buff))
- {
- crypter.update(buff);
- if (!crypter.isLock())
- {
- continue;
- }
- }
- if (crypter.isLock())
- {
- _buff = null;
- return;
- }
- _buff = crypter.decryptResult();
- crypter.release();
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- public static void encrypt(byte[] buff, String file, DatCrypter crypter) throws IOException
- {
- crypter.unlock();
- crypter.aquire();
- FileOutputStream os = new FileOutputStream(file, false);
- String header = "Lineage2Ver" + crypter.getCode();
- os.write(header.getBytes("UTF-16LE"));
- crypter.update(buff);
- byte[] res = crypter.encryptResult().array();
- os.write(res);
- if (ConfigDebug.DAT_ADD_END_BYTES)
- {
- byte[] endBytes = new byte[20];
- endBytes[19] = 100;
- os.write(endBytes);
- }
- os.close();
- crypter.release();
- }
-
- @SuppressWarnings("resource")
- private void loadInfo(DatCrypter crypter) throws IOException
- {
- if (!exists() || !canRead())
- {
- throw new IOException("Can not read the dat file");
- }
- FileInputStream fis = new FileInputStream(this);
- if (fis.available() < 28)
- {
- throw new IOException("Can not read the dat file : too small");
- }
- byte[] head = new byte[28];
- fis.read(head);
- String header = new String(head, "UTF-16LE");
- if (!header.startsWith("Lineage2Ver"))
- {
- throw new IOException("Can not read the dat file : wrong header");
- }
- if (header.endsWith("111") || header.endsWith("120"))
- {
- return;
- }
- if (header.endsWith("211") || header.endsWith("212"))
- {
- return;
- }
- if (header.endsWith("311"))
- {
- return;
- }
- if (header.endsWith("411") || header.endsWith("412") || header.endsWith("413") || header.endsWith("414"))
- {
- if (fis.available() < 20)
- {
- throw new IOException("Can not read the dat file : too small");
- }
- }
- else
- {
- throw new IOException("Can not read the dat file : unknown header : '" + header + "'");
- }
- fis.close();
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowFishDatCrypter.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowFishDatCrypter.java
deleted file mode 100644
index 5e3331c609..0000000000
--- a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowFishDatCrypter.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.clientcryptor.crypt;
-
-import java.nio.ByteBuffer;
-
-public class BlowFishDatCrypter extends DatCrypter
-{
- private boolean encrypt = false;
- private final BlowfishEngine blowfish = new BlowfishEngine();
-
- public BlowFishDatCrypter(int code, String key, boolean deCrypt)
- {
- super(code);
- encrypt = !deCrypt;
- blowfish.init(encrypt, key.getBytes());
- }
-
- @Override
- public ByteBuffer decryptResult()
- {
- return null;
- }
-
- @Override
- public ByteBuffer encryptResult()
- {
- return null;
- }
-
- @Override
- public void update(byte[] b)
- {
- }
-
- @Override
- public int getChunkSize(int available)
- {
- return available;
- }
-
- @Override
- public int getSkipSize()
- {
- return 0;
- }
-
- @Override
- public boolean isLock()
- {
- return false;
- }
-
- @Override
- public boolean isEncrypt()
- {
- return encrypt;
- }
-
- @Override
- public void unlock()
- {
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowfishEngine.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowfishEngine.java
deleted file mode 100644
index 24f270e3a2..0000000000
--- a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/BlowfishEngine.java
+++ /dev/null
@@ -1,1214 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.clientcryptor.crypt;
-
-import javax.crypto.IllegalBlockSizeException;
-import javax.crypto.ShortBufferException;
-
-public final class BlowfishEngine
-{
- private static final int[] KP = new int[]
- {
- 608135816,
- -2052912941,
- 320440878,
- 57701188,
- -1542899678,
- 698298832,
- 137296536,
- -330404727,
- 1160258022,
- 953160567,
- -1101764913,
- 887688300,
- -1062458953,
- -914599715,
- 1065670069,
- -1253635817,
- -1843997223,
- -1988494565
- };
- private static final int[] KS0 = new int[]
- {
- -785314906,
- -1730169428,
- 805139163,
- -803545161,
- -1193168915,
- 1780907670,
- -1166241723,
- -248741991,
- 614570311,
- -1282315017,
- 134345442,
- -2054226922,
- 1667834072,
- 1901547113,
- -1537671517,
- -191677058,
- 227898511,
- 1921955416,
- 1904987480,
- -2112533778,
- 2069144605,
- -1034266187,
- -1674521287,
- 720527379,
- -976113629,
- 677414384,
- -901678824,
- -1193592593,
- -1904616272,
- 1614419982,
- 1822297739,
- -1340175810,
- -686458943,
- -1120842969,
- 2024746970,
- 1432378464,
- -430627341,
- -1437226092,
- 1464375394,
- 1676153920,
- 1439316330,
- 715854006,
- -1261675468,
- 289532110,
- -1588296017,
- 2087905683,
- -1276242927,
- 1668267050,
- 732546397,
- 1947742710,
- -832815594,
- -1685613794,
- -1344882125,
- 1814351708,
- 2050118529,
- 680887927,
- 999245976,
- 1800124847,
- -994056165,
- 1713906067,
- 1641548236,
- -81679983,
- 1216130144,
- 1575780402,
- -276538019,
- -377129551,
- -601480446,
- -345695352,
- 596196993,
- -745100091,
- 258830323,
- -2081144263,
- 772490370,
- -1534844924,
- 1774776394,
- -1642095778,
- 566650946,
- -152474470,
- 1728879713,
- -1412200208,
- 1783734482,
- -665571480,
- -1777359064,
- -1420741725,
- 1861159788,
- 326777828,
- -1170476976,
- 2130389656,
- -1578015459,
- 967770486,
- 1724537150,
- -2109534584,
- -1930525159,
- 1164943284,
- 2105845187,
- 998989502,
- -529566248,
- -2050940813,
- 1075463327,
- 1455516326,
- 1322494562,
- 910128902,
- 469688178,
- 1117454909,
- 936433444,
- -804646328,
- -619713837,
- 1240580251,
- 122909385,
- -2137449605,
- 634681816,
- -152510729,
- -469872614,
- -1233564613,
- -1754472259,
- 79693498,
- -1045868618,
- 1084186820,
- 1583128258,
- 426386531,
- 1761308591,
- 1047286709,
- 322548459,
- 995290223,
- 1845252383,
- -1691314900,
- -863943356,
- -1352745719,
- -1092366332,
- -567063811,
- 1712269319,
- 422464435,
- -1060394921,
- 1170764815,
- -771006663,
- -1177289765,
- 1434042557,
- 442511882,
- -694091578,
- 1076654713,
- 1738483198,
- -81812532,
- -1901729288,
- -617471240,
- 1014306527,
- -43947243,
- 793779912,
- -1392160085,
- 842905082,
- -48003232,
- 1395751752,
- 1040244610,
- -1638115397,
- -898659168,
- 445077038,
- -552113701,
- -717051658,
- 679411651,
- -1402522938,
- -1940957837,
- 1767581616,
- -1144366904,
- -503340195,
- -1192226400,
- 284835224,
- -48135240,
- 1258075500,
- 768725851,
- -1705778055,
- -1225243291,
- -762426948,
- 1274779536,
- -505548070,
- -1530167757,
- 1660621633,
- -823867672,
- -283063590,
- 913787905,
- -797008130,
- 737222580,
- -1780753843,
- -1366257256,
- -357724559,
- 1804850592,
- -795946544,
- -1345903136,
- -1908647121,
- -1904896841,
- -1879645445,
- -233690268,
- -2004305902,
- -1878134756,
- 1336762016,
- 1754252060,
- -774901359,
- -1280786003,
- 791618072,
- -1106372745,
- -361419266,
- -1962795103,
- -442446833,
- -1250986776,
- 413987798,
- -829824359,
- -1264037920,
- -49028937,
- 2093235073,
- -760370983,
- 375366246,
- -2137688315,
- -1815317740,
- 555357303,
- -424861595,
- 2008414854,
- -950779147,
- -73583153,
- -338841844,
- 2067696032,
- -700376109,
- -1373733303,
- 2428461,
- 544322398,
- 577241275,
- 1471733935,
- 610547355,
- -267798242,
- 1432588573,
- 1507829418,
- 2025931657,
- -648391809,
- 545086370,
- 48609733,
- -2094660746,
- 1653985193,
- 298326376,
- 1316178497,
- -1287180854,
- 2064951626,
- 458293330,
- -1705826027,
- -703637697,
- -1130641692,
- 727753846,
- -2115603456,
- 146436021,
- 1461446943,
- -224990101,
- 705550613,
- -1235000031,
- -407242314,
- -13368018,
- -981117340,
- 1404054877,
- -1449160799,
- 146425753,
- 1854211946
- };
- private static final int[] KS1 = new int[]
- {
- 1266315497,
- -1246549692,
- -613086930,
- -1004984797,
- -1385257296,
- 1235738493,
- -1662099272,
- -1880247706,
- -324367247,
- 1771706367,
- 1449415276,
- -1028546847,
- 422970021,
- 1963543593,
- -1604775104,
- -468174274,
- 1062508698,
- 1531092325,
- 1804592342,
- -1711849514,
- -1580033017,
- -269995787,
- 1294809318,
- -265986623,
- 1289560198,
- -2072974554,
- 1669523910,
- 35572830,
- 157838143,
- 1052438473,
- 1016535060,
- 1802137761,
- 1753167236,
- 1386275462,
- -1214491899,
- -1437595849,
- 1040679964,
- 2145300060,
- -1904392980,
- 1461121720,
- -1338320329,
- -263189491,
- -266592508,
- 33600511,
- -1374882534,
- 1018524850,
- 629373528,
- -603381315,
- -779021319,
- 2091462646,
- -1808644237,
- 586499841,
- 988145025,
- 935516892,
- -927631820,
- -1695294041,
- -1455136442,
- 265290510,
- -322386114,
- -1535828415,
- -499593831,
- 1005194799,
- 847297441,
- 406762289,
- 1314163512,
- 1332590856,
- 1866599683,
- -167115585,
- 750260880,
- 613907577,
- 1450815602,
- -1129346641,
- -560302305,
- -644675568,
- -1282691566,
- -590397650,
- 1427272223,
- 778793252,
- 1343938022,
- -1618686585,
- 2052605720,
- 1946737175,
- -1130390852,
- -380928628,
- -327488454,
- -612033030,
- 1661551462,
- -1000029230,
- -283371449,
- 840292616,
- -582796489,
- 616741398,
- 312560963,
- 711312465,
- 1351876610,
- 322626781,
- 1910503582,
- 271666773,
- -2119403562,
- 1594956187,
- 70604529,
- -677132437,
- 1007753275,
- 1495573769,
- -225450259,
- -1745748998,
- -1631928532,
- 504708206,
- -2031925904,
- -353800271,
- -2045878774,
- 1514023603,
- 1998579484,
- 1312622330,
- 694541497,
- -1712906993,
- -2143385130,
- 1382467621,
- 776784248,
- -1676627094,
- -971698502,
- -1797068168,
- -1510196141,
- 503983604,
- -218673497,
- 907881277,
- 423175695,
- 432175456,
- 1378068232,
- -149744970,
- -340918674,
- -356311194,
- -474200683,
- -1501837181,
- -1317062703,
- 26017576,
- -1020076561,
- -1100195163,
- 1700274565,
- 1756076034,
- -288447217,
- -617638597,
- 720338349,
- 1533947780,
- 354530856,
- 688349552,
- -321042571,
- 1637815568,
- 332179504,
- -345916010,
- 53804574,
- -1442618417,
- -1250730864,
- 1282449977,
- -711025141,
- -877994476,
- -288586052,
- 1617046695,
- -1666491221,
- -1292663698,
- 1686838959,
- 431878346,
- -1608291911,
- 1700445008,
- 1080580658,
- 1009431731,
- 832498133,
- -1071531785,
- -1688990951,
- -2023776103,
- -1778935426,
- 1648197032,
- -130578278,
- -1746719369,
- 300782431,
- 375919233,
- 238389289,
- -941219882,
- -1763778655,
- 2019080857,
- 1475708069,
- 455242339,
- -1685863425,
- 448939670,
- -843904277,
- 1395535956,
- -1881585436,
- 1841049896,
- 1491858159,
- 885456874,
- -30872223,
- -293847949,
- 1565136089,
- -396052509,
- 1108368660,
- 540939232,
- 1173283510,
- -1549095958,
- -613658859,
- -87339056,
- -951913406,
- -278217803,
- 1699691293,
- 1103962373,
- -669091426,
- -2038084153,
- -464828566,
- 1031889488,
- -815619598,
- 1535977030,
- -58162272,
- -1043876189,
- 2132092099,
- 1774941330,
- 1199868427,
- 1452454533,
- 157007616,
- -1390851939,
- 342012276,
- 595725824,
- 1480756522,
- 206960106,
- 497939518,
- 591360097,
- 863170706,
- -1919713727,
- -698356495,
- 1814182875,
- 2094937945,
- -873565088,
- 1082520231,
- -831049106,
- -1509457788,
- 435703966,
- -386934699,
- 1641649973,
- -1452693590,
- -989067582,
- 1510255612,
- -2146710820,
- -1639679442,
- -1018874748,
- -36346107,
- 236887753,
- -613164077,
- 274041037,
- 1734335097,
- -479771840,
- -976997275,
- 1899903192,
- 1026095262,
- -244449504,
- 356393447,
- -1884275382,
- -421290197,
- -612127241
- };
- private static final int[] KS2 = new int[]
- {
- -381855128,
- -1803468553,
- -162781668,
- -1805047500,
- 1091903735,
- 1979897079,
- -1124832466,
- -727580568,
- -737663887,
- 857797738,
- 1136121015,
- 1342202287,
- 507115054,
- -1759230650,
- 337727348,
- -1081374656,
- 1301675037,
- -1766485585,
- 1895095763,
- 1721773893,
- -1078195732,
- 62756741,
- 2142006736,
- 835421444,
- -1762973773,
- 1442658625,
- -635090970,
- -1412822374,
- 676362277,
- 1392781812,
- 170690266,
- -373920261,
- 1759253602,
- -683120384,
- 1745797284,
- 664899054,
- 1329594018,
- -393761396,
- -1249058810,
- 2062866102,
- -1429332356,
- -751345684,
- -830954599,
- 1080764994,
- 553557557,
- -638351943,
- -298199125,
- 991055499,
- 499776247,
- 1265440854,
- 648242737,
- -354183246,
- 980351604,
- -581221582,
- 1749149687,
- -898096901,
- -83167922,
- -654396521,
- 1161844396,
- -1169648345,
- 1431517754,
- 545492359,
- -26498633,
- -795437749,
- 1437099964,
- -1592419752,
- -861329053,
- -1713251533,
- -1507177898,
- 1060185593,
- 1593081372,
- -1876348548,
- -34019326,
- 69676912,
- -2135222948,
- 86519011,
- -1782508216,
- -456757982,
- 1220612927,
- -955283748,
- 133810670,
- 1090789135,
- 1078426020,
- 1569222167,
- 845107691,
- -711212847,
- -222510705,
- 1091646820,
- 628848692,
- 1613405280,
- -537335645,
- 526609435,
- 236106946,
- 48312990,
- -1352249391,
- -892239595,
- 1797494240,
- 859738849,
- 992217954,
- -289490654,
- -2051890674,
- -424014439,
- -562951028,
- 765654824,
- -804095931,
- -1783130883,
- 1685915746,
- -405998096,
- 1414112111,
- -2021832454,
- -1013056217,
- -214004450,
- 172450625,
- -1724973196,
- 980381355,
- -185008841,
- -1475158944,
- -1578377736,
- -1726226100,
- -613520627,
- -964995824,
- 1835478071,
- 660984891,
- -590288892,
- -248967737,
- -872349789,
- -1254551662,
- 1762651403,
- 1719377915,
- -824476260,
- -1601057013,
- -652910941,
- -1156370552,
- 1364962596,
- 2073328063,
- 1983633131,
- 926494387,
- -871278215,
- -2144935273,
- -198299347,
- 1749200295,
- -966120645,
- 309677260,
- 2016342300,
- 1779581495,
- -1215147545,
- 111262694,
- 1274766160,
- 443224088,
- 298511866,
- 1025883608,
- -488520759,
- 1145181785,
- 168956806,
- -653464466,
- -710153686,
- 1689216846,
- -628709281,
- -1094719096,
- 1692713982,
- -1648590761,
- -252198778,
- 1618508792,
- 1610833997,
- -771914938,
- -164094032,
- 2001055236,
- -684262196,
- -2092799181,
- -266425487,
- -1333771897,
- 1006657119,
- 2006996926,
- -1108824540,
- 1430667929,
- -1084739999,
- 1314452623,
- -220332638,
- -193663176,
- -2021016126,
- 1399257539,
- -927756684,
- -1267338667,
- 1190975929,
- 2062231137,
- -1960976508,
- -2073424263,
- -1856006686,
- 1181637006,
- 548689776,
- -1932175983,
- -922558900,
- -1190417183,
- -1149106736,
- 296247880,
- 1970579870,
- -1216407114,
- -525738999,
- 1714227617,
- -1003338189,
- -396747006,
- 166772364,
- 1251581989,
- 493813264,
- 448347421,
- 195405023,
- -1584991729,
- 677966185,
- -591930749,
- 1463355134,
- -1578971493,
- 1338867538,
- 1343315457,
- -1492745222,
- -1610435132,
- 233230375,
- -1694987225,
- 2000651841,
- -1017099258,
- 1638401717,
- -266896856,
- -1057650976,
- 6314154,
- 819756386,
- 300326615,
- 590932579,
- 1405279636,
- -1027467724,
- -1144263082,
- -1866680610,
- -335774303,
- -833020554,
- 1862657033,
- 1266418056,
- 963775037,
- 2089974820,
- -2031914401,
- 1917689273,
- 448879540,
- -744572676,
- -313240200,
- 150775221,
- -667058989,
- 1303187396,
- 508620638,
- -1318983944,
- -1568336679,
- 1817252668,
- 1876281319,
- 1457606340,
- 908771278,
- -574175177,
- -677760460,
- -1838972398,
- 1729034894,
- 1080033504
- };
- private static final int[] KS3 = new int[]
- {
- 976866871,
- -738527793,
- -1413318857,
- 1522871579,
- 1555064734,
- 1336096578,
- -746444992,
- -1715692610,
- -720269667,
- -1089506539,
- -701686658,
- -956251013,
- -1215554709,
- 564236357,
- -1301368386,
- 1781952180,
- 1464380207,
- -1131123079,
- -962365742,
- 1699332808,
- 1393555694,
- 1183702653,
- -713881059,
- 1288719814,
- 691649499,
- -1447410096,
- -1399511320,
- -1101077756,
- -1577396752,
- 1781354906,
- 1676643554,
- -1702433246,
- -1064713544,
- 1126444790,
- -1524759638,
- -1661808476,
- -2084544070,
- -1679201715,
- -1880812208,
- -1167828010,
- 673620729,
- -1489356063,
- 1269405062,
- -279616791,
- -953159725,
- -145557542,
- 1057255273,
- 2012875353,
- -2132498155,
- -2018474495,
- -1693849939,
- 993977747,
- -376373926,
- -1640704105,
- 753973209,
- 36408145,
- -1764381638,
- 25011837,
- -774947114,
- 2088578344,
- 530523599,
- -1376601957,
- 1524020338,
- 1518925132,
- -534139791,
- -535190042,
- 1202760957,
- -309069157,
- -388774771,
- 674977740,
- -120232407,
- 2031300136,
- 2019492241,
- -311074731,
- -141160892,
- -472686964,
- 352677332,
- -1997247046,
- 60907813,
- 90501309,
- -1007968747,
- 1016092578,
- -1759044884,
- -1455814870,
- 457141659,
- 509813237,
- -174299397,
- 652014361,
- 1966332200,
- -1319764491,
- 55981186,
- -1967506245,
- 676427537,
- -1039476232,
- -1412673177,
- -861040033,
- 1307055953,
- 942726286,
- 933058658,
- -1826555503,
- -361066302,
- -79791154,
- 1361170020,
- 2001714738,
- -1464409218,
- -1020707514,
- 1222529897,
- 1679025792,
- -1565652976,
- -580013532,
- 1770335741,
- 151462246,
- -1281735158,
- 1682292957,
- 1483529935,
- 471910574,
- 1539241949,
- 458788160,
- -858652289,
- 1807016891,
- -576558466,
- 978976581,
- 1043663428,
- -1129001515,
- 1927990952,
- -94075717,
- -1922690386,
- -1086558393,
- -761535389,
- 1412390302,
- -1362987237,
- -162634896,
- 1947078029,
- -413461673,
- -126740879,
- -1353482915,
- 1077988104,
- 1320477388,
- 886195818,
- 18198404,
- -508558296,
- -1785185763,
- 112762804,
- -831610808,
- 1866414978,
- 891333506,
- 18488651,
- 661792760,
- 1628790961,
- -409780260,
- -1153795797,
- 876946877,
- -1601685023,
- 1372485963,
- 791857591,
- -1608533303,
- -534984578,
- -1127755274,
- -822013501,
- -1578587449,
- 445679433,
- -732971622,
- -790962485,
- -720709064,
- 54117162,
- -963561881,
- -1913048708,
- -525259953,
- -140617289,
- 1140177722,
- -220915201,
- 668550556,
- -1080614356,
- 367459370,
- 261225585,
- -1684794075,
- -85617823,
- -826893077,
- -1029151655,
- 314222801,
- -1228863650,
- -486184436,
- 282218597,
- -888953790,
- -521376242,
- 379116347,
- 1285071038,
- 846784868,
- -1625320142,
- -523005217,
- -744475605,
- -1989021154,
- 453669953,
- 1268987020,
- -977374944,
- -1015663912,
- -550133875,
- -1684459730,
- -435458233,
- 266596637,
- -447948204,
- 517658769,
- -832407089,
- -851542417,
- 370717030,
- -47440635,
- -2070949179,
- -151313767,
- -182193321,
- -1506642397,
- -1817692879,
- 1456262402,
- -1393524382,
- 1517677493,
- 1846949527,
- -1999473716,
- -560569710,
- -2118563376,
- 1280348187,
- 1908823572,
- -423180355,
- 846861322,
- 1172426758,
- -1007518822,
- -911584259,
- 1655181056,
- -1155153950,
- 901632758,
- 1897031941,
- -1308360158,
- -1228157060,
- -847864789,
- 1393639104,
- 373351379,
- 950779232,
- 625454576,
- -1170726756,
- -146354570,
- 2007998917,
- 544563296,
- -2050228658,
- -1964470824,
- 2058025392,
- 1291430526,
- 424198748,
- 50039436,
- 29584100,
- -689184263,
- -1865090967,
- -1503863136,
- 1057563949,
- -1039604065,
- -1219600078,
- -831004069,
- 1469046755,
- 985887462
- };
- private final int[] S0 = new int[256];
- private final int[] S1 = new int[256];
- private final int[] S2 = new int[256];
- private final int[] S3 = new int[256];
- private final int[] P = new int[18];
- private boolean encrypting = false;
- private byte[] workingKey = null;
-
- public void init(boolean encryption, byte[] key)
- {
- encrypting = encryption;
- workingKey = key;
- setKey(workingKey);
- }
-
- public final int processBlock(byte[] in, int inOff, byte[] out, int outOff) throws IllegalBlockSizeException, ShortBufferException
- {
- if (workingKey == null)
- {
- throw new IllegalStateException("Blowfish not initialised");
- }
- if ((inOff + 8) > in.length)
- {
- throw new IllegalBlockSizeException("input buffer too short");
- }
- if ((outOff + 8) > out.length)
- {
- throw new ShortBufferException("output buffer too short");
- }
- if (encrypting)
- {
- encryptBlock(in, inOff, out, outOff);
- }
- else
- {
- decryptBlock(in, inOff, out, outOff);
- }
- return 8;
- }
-
- private int F(int x)
- {
- return ((S0[x >>> 24] + S1[(x >>> 16) & 255]) ^ S2[(x >>> 8) & 255]) + S3[x & 255];
- }
-
- private void processTable(int xl, int xr, int[] table)
- {
- int size = table.length;
- for (int s = 0; s < size; s += 2)
- {
- xl ^= P[0];
- for (int i = 1; i < 16; i += 2)
- {
- xl ^= F(xr ^= F(xl) ^ P[i]) ^ P[i + 1];
- }
- table[s] = xr ^= P[17];
- table[s + 1] = xl;
- xr = xl;
- xl = table[s];
- }
- }
-
- private void setKey(byte[] key)
- {
- System.arraycopy(KS0, 0, S0, 0, 256);
- System.arraycopy(KS1, 0, S1, 0, 256);
- System.arraycopy(KS2, 0, S2, 0, 256);
- System.arraycopy(KS3, 0, S3, 0, 256);
- System.arraycopy(KP, 0, P, 0, 18);
- int keyLength = key.length;
- int keyIndex = 0;
- int i = 0;
- while (i < 18)
- {
- int data = 0;
- for (int j = 0; j < 4; ++j)
- {
- data = (data << 8) | (key[keyIndex++] & 255);
- if (keyIndex < keyLength)
- {
- continue;
- }
- keyIndex = 0;
- }
- int[] arrn = P;
- int n = i++;
- arrn[n] = arrn[n] ^ data;
- }
- processTable(0, 0, P);
- processTable(P[16], P[17], S0);
- processTable(S0[254], S0[255], S1);
- processTable(S1[254], S1[255], S2);
- processTable(S2[254], S2[255], S3);
- }
-
- private void encryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)
- {
- int xl = BytesTo32bits(src, srcIndex);
- int xr = BytesTo32bits(src, srcIndex + 4);
- xl ^= P[0];
- for (int i = 1; i < 16; i += 2)
- {
- xl ^= F(xr ^= F(xl) ^ P[i]) ^ P[i + 1];
- }
- Bits32ToBytes(xr ^= P[17], dst, dstIndex);
- Bits32ToBytes(xl, dst, dstIndex + 4);
- }
-
- private void decryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)
- {
- int xl = BytesTo32bits(src, srcIndex);
- int xr = BytesTo32bits(src, srcIndex + 4);
- xl ^= P[17];
- for (int i = 16; i > 0; i -= 2)
- {
- xl ^= F(xr ^= F(xl) ^ P[i]) ^ P[i - 1];
- }
- Bits32ToBytes(xr ^= P[0], dst, dstIndex);
- Bits32ToBytes(xl, dst, dstIndex + 4);
- }
-
- private int BytesTo32bits(byte[] b, int i)
- {
- return ((b[i + 3] & 255) << 24) | ((b[i + 2] & 255) << 16) | ((b[i + 1] & 255) << 8) | (b[i] & 255);
- }
-
- private void Bits32ToBytes(int in, byte[] b, int offset)
- {
- b[offset] = (byte) in;
- b[offset + 1] = (byte) (in >> 8);
- b[offset + 2] = (byte) (in >> 16);
- b[offset + 3] = (byte) (in >> 24);
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DESDatCrypter.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DESDatCrypter.java
deleted file mode 100644
index b1512a475c..0000000000
--- a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DESDatCrypter.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.clientcryptor.crypt;
-
-import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-
-import javax.crypto.Cipher;
-import javax.crypto.SecretKey;
-import javax.crypto.SecretKeyFactory;
-import javax.crypto.spec.DESKeySpec;
-
-public class DESDatCrypter extends DatCrypter
-{
- private ByteArrayOutputStream _result;
- private final boolean encrypt;
- private final Cipher _cipher;
-
- public DESDatCrypter(int code, String sKey, boolean deCrypt) throws Exception
- {
- super(code);
- encrypt = !deCrypt;
- byte[] key = sKey.getBytes();
- byte[] keyXor = new byte[key.length];
- for (int i = 0; i < key.length; ++i)
- {
- byte[] arrby = keyXor;
- int n = i % 8;
- arrby[n] = (byte) (arrby[n] ^ key[i]);
- }
- DESKeySpec dks = new DESKeySpec(keyXor);
- SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
- SecretKey desKey = skf.generateSecret(dks);
- _cipher = Cipher.getInstance("DES/ECB/NoPadding");
- _cipher.init(deCrypt ? 2 : 1, desKey);
- }
-
- @Override
- public ByteBuffer decryptResult()
- {
- return ByteBuffer.wrap(_result.toByteArray());
- }
-
- @Override
- public ByteBuffer encryptResult()
- {
- return ByteBuffer.wrap(_result.toByteArray());
- }
-
- @Override
- public void update(byte[] bArray)
- {
- try
- {
- if (!encrypt)
- {
- int size;
- _result = new ByteArrayOutputStream(bArray.length);
- byte[] bytes = new byte[8];
- for (int position = 0; position < bArray.length; position += size)
- {
- size = Math.min(8, bArray.length - position);
- System.arraycopy(bArray, position, bytes, 0, size);
- _result.write(size == 8 ? _cipher.doFinal(bytes) : bytes, 0, size);
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- @Override
- public int getChunkSize(int available)
- {
- return available;
- }
-
- @Override
- public int getSkipSize()
- {
- return 0;
- }
-
- @Override
- public boolean isLock()
- {
- return false;
- }
-
- @Override
- public boolean isEncrypt()
- {
- return encrypt;
- }
-
- @Override
- public void unlock()
- {
- }
-
- @Override
- public void aquire()
- {
- super.aquire();
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DatCrypter.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DatCrypter.java
deleted file mode 100644
index 53be10a8d8..0000000000
--- a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/DatCrypter.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.clientcryptor.crypt;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.locks.ReentrantLock;
-
-public abstract class DatCrypter
-{
- private final ReentrantLock _lock = new ReentrantLock(true);
- private final int code;
- private boolean useStructure;
- private final List fileEndNames = new ArrayList<>();
-
- public DatCrypter(int code)
- {
- this.code = code;
- }
-
- public abstract void update(byte[] var1);
-
- public abstract ByteBuffer decryptResult();
-
- public abstract ByteBuffer encryptResult();
-
- public abstract int getChunkSize(int var1);
-
- public abstract int getSkipSize();
-
- public abstract boolean isLock();
-
- public boolean checkAquired()
- {
- return _lock.isHeldByCurrentThread();
- }
-
- public void aquire()
- {
- _lock.lock();
- }
-
- public void release()
- {
- _lock.unlock();
- }
-
- public abstract boolean isEncrypt();
-
- public abstract void unlock();
-
- public int getCode()
- {
- return code;
- }
-
- public void addFileExtension(String n)
- {
- fileEndNames.addAll(Arrays.asList(n.split(";")));
- }
-
- public boolean checkFileExtension(String n)
- {
- return n.contains(".") && fileEndNames.contains(n.split("\\.")[1]);
- }
-
- public boolean isUseStructure()
- {
- return useStructure;
- }
-
- public void setUseStructure(boolean useStructure)
- {
- this.useStructure = useStructure;
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/RSADatCrypter.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/RSADatCrypter.java
deleted file mode 100644
index d7a2136263..0000000000
--- a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/RSADatCrypter.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.clientcryptor.crypt;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.math.BigInteger;
-import java.nio.ByteBuffer;
-import java.security.KeyFactory;
-import java.security.interfaces.RSAPrivateKey;
-import java.security.interfaces.RSAPublicKey;
-import java.security.spec.RSAPrivateKeySpec;
-import java.security.spec.RSAPublicKeySpec;
-import java.util.Arrays;
-import java.util.zip.Deflater;
-import java.util.zip.DeflaterOutputStream;
-import java.util.zip.Inflater;
-import java.util.zip.InflaterInputStream;
-
-import javax.crypto.Cipher;
-
-import com.l2jmobius.util.DebugUtil;
-import com.l2jmobius.util.Util;
-
-public class RSADatCrypter extends DatCrypter
-{
- private Cipher _cipher;
- private ByteArrayOutputStream _result;
- private boolean encrypt = false;
- private boolean _errorLock = false;
-
- public RSADatCrypter(int code, String modulus, String exp, boolean deCrypt)
- {
- super(code);
- try
- {
- _cipher = Cipher.getInstance("RSA/ECB/nopadding");
- if (deCrypt)
- {
- RSAPublicKeySpec keyspec = new RSAPublicKeySpec(new BigInteger(modulus, 16), new BigInteger(exp, 16));
- RSAPublicKey rsaKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(keyspec);
- _cipher.init(2, rsaKey);
- }
- else
- {
- encrypt = true;
- RSAPrivateKeySpec keyspec = new RSAPrivateKeySpec(new BigInteger(modulus, 16), new BigInteger(exp, 16));
- RSAPrivateKey rsaKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(keyspec);
- _cipher.init(1, rsaKey);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- @Override
- public ByteBuffer decryptResult()
- {
- if (!checkAquired())
- {
- throw new IllegalStateException("Dont even think about using a DatCrypter that you didnt aquired");
- }
- byte[] compressed = _result.toByteArray();
- int inflatedSize = compressed[0] & 255;
- inflatedSize += (compressed[1] << 8) & 65280;
- inflatedSize += (compressed[2] << 16) & 16711680;
- inflatedSize += (compressed[3] << 24) & -16777216;
- ByteArrayInputStream bais = new ByteArrayInputStream(compressed, 4, compressed.length - 4);
- InflaterInputStream iis = new InflaterInputStream(bais, new Inflater());
- ByteArrayOutputStream baos = new ByteArrayOutputStream(128);
- byte[] inflatedResult = new byte[128];
- try
- {
- int len;
- while ((len = iis.read(inflatedResult)) > 0)
- {
- baos.write(inflatedResult, 0, len);
- }
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- if (baos.size() != inflatedSize)
- {
- DebugUtil.getLogger().error("[RSADatCrypter] Hum inflated result doesnt have the expected length..(" + baos.size() + "!=" + inflatedSize + ")");
- }
- return ByteBuffer.wrap(baos.toByteArray());
- }
-
- @Override
- public ByteBuffer encryptResult()
- {
- if (!checkAquired())
- {
- throw new IllegalStateException("Dont even think about using a DatCrypter that you didnt aquired");
- }
- ByteArrayOutputStream result = new ByteArrayOutputStream();
- try
- {
- int len;
- ByteArrayInputStream input = new ByteArrayInputStream(_result.toByteArray());
- byte[] buffer = new byte[124];
- byte[] block = new byte[128];
- while ((len = input.read(buffer)) > 0)
- {
- Arrays.fill(block, (byte) 0);
- block[0] = (byte) ((len >> 24) & 255);
- block[1] = (byte) ((len >> 16) & 255);
- block[2] = (byte) ((len >> 8) & 255);
- block[3] = (byte) (len & 255);
- System.arraycopy(buffer, 0, block, 128 - len - ((124 - len) % 4), len);
- result.write(_cipher.doFinal(block));
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- return ByteBuffer.wrap(result.toByteArray());
- }
-
- @Override
- public void update(byte[] b)
- {
- if (!checkAquired())
- {
- throw new IllegalStateException("Dont even think about using a DatCrypter that you didnt aquired");
- }
- try
- {
- if (!encrypt)
- {
- byte[] chunk = _cipher.doFinal(b);
- int size = chunk[3];
- size += (chunk[2] << 8) & 65280;
- size += (chunk[1] << 16) & 16711680;
- int pad = (-size & 1) + (-(size += (chunk[0] << 24) & -16777216) & 2);
- DebugUtil.debug("Size:" + size + " pad:" + pad);
- if (size > 128)
- {
- _errorLock = true;
- return;
- }
- _result.write(chunk, 128 - size - pad, size);
- DebugUtil.debug("--- BLOCK:\n" + Util.printData(chunk) + "-----");
- }
- else
- {
- try
- {
- ByteArrayOutputStream s = new ByteArrayOutputStream(b.length);
- DeflaterOutputStream dos = new DeflaterOutputStream(s, new Deflater());
- dos.write(b);
- dos.finish();
- dos.close();
- int l = b.length;
- _result = new ByteArrayOutputStream(10 + s.toByteArray().length);
- _result.write(l & 255);
- _result.write((l & 65280) >> 8);
- _result.write((l & 16711680) >> 16);
- _result.write((l & -16777216) >> 24);
- _result.write(s.toByteArray());
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- _errorLock = true;
- }
- }
-
- @Override
- public void aquire()
- {
- super.aquire();
- _result = new ByteArrayOutputStream(128);
- }
-
- @Override
- public boolean isEncrypt()
- {
- return encrypt;
- }
-
- @Override
- public int getChunkSize(int available)
- {
- return 128;
- }
-
- @Override
- public int getSkipSize()
- {
- return 20;
- }
-
- @Override
- public boolean isLock()
- {
- return _errorLock;
- }
-
- @Override
- public void unlock()
- {
- _errorLock = false;
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/XorDatCrypter.java b/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/XorDatCrypter.java
deleted file mode 100644
index e1e7c33f8c..0000000000
--- a/L2ClientDat/java/com/l2jmobius/clientcryptor/crypt/XorDatCrypter.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.clientcryptor.crypt;
-
-import java.io.ByteArrayOutputStream;
-import java.nio.ByteBuffer;
-
-public class XorDatCrypter extends DatCrypter
-{
- private ByteArrayOutputStream _result;
- private final boolean encrypt;
- private final int xorKey;
-
- public XorDatCrypter(int code, int key, boolean deCrypt)
- {
- super(code);
- encrypt = !deCrypt;
- xorKey = key;
- }
-
- @Override
- public ByteBuffer decryptResult()
- {
- return ByteBuffer.wrap(_result.toByteArray());
- }
-
- @Override
- public ByteBuffer encryptResult()
- {
- return ByteBuffer.wrap(_result.toByteArray());
- }
-
- @Override
- public void update(byte[] bArray)
- {
- for (byte b : bArray)
- {
- _result.write(b ^ xorKey);
- }
- }
-
- @Override
- public int getChunkSize(int available)
- {
- return 1;
- }
-
- @Override
- public int getSkipSize()
- {
- return 0;
- }
-
- @Override
- public boolean isLock()
- {
- return false;
- }
-
- @Override
- public boolean isEncrypt()
- {
- return encrypt;
- }
-
- @Override
- public void unlock()
- {
- }
-
- @Override
- public void aquire()
- {
- super.aquire();
- _result = new ByteArrayOutputStream(128);
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/config/ConfigDebug.java b/L2ClientDat/java/com/l2jmobius/config/ConfigDebug.java
deleted file mode 100644
index c28318e47e..0000000000
--- a/L2ClientDat/java/com/l2jmobius/config/ConfigDebug.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.config;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-
-import com.l2jmobius.util.DebugUtil;
-
-import jfork.nproperty.Cfg;
-import jfork.nproperty.CfgIgnore;
-import jfork.nproperty.ConfigParser;
-
-@Cfg
-public class ConfigDebug extends ConfigParser
-{
- @CfgIgnore
- private static final ConfigDebug _instance = new ConfigDebug();
- public static boolean DAT_ADD_END_BYTES = true;
- public static boolean DAT_DEBUG_MSG = false;
- public static boolean DAT_DEBUG_POS = false;
- public static int DAT_DEBUG_POS_LIMIT = 100000;
- public static boolean DAT_REPLACEMENT_NAMES = true;
- public static boolean ENCRYPT = true;
- public static boolean SAVE_DECODE = false;
-
- public static void load()
- {
- try
- {
- ConfigParser.parse((_instance), "./config/config_debug.ini");
- }
- catch (IOException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e)
- {
- DebugUtil.getLogger().error("Failed to load configuration file.", e);
- }
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/config/ConfigWindow.java b/L2ClientDat/java/com/l2jmobius/config/ConfigWindow.java
deleted file mode 100644
index 10002d2da9..0000000000
--- a/L2ClientDat/java/com/l2jmobius/config/ConfigWindow.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.config;
-
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Properties;
-
-import com.l2jmobius.util.DebugUtil;
-
-import jfork.nproperty.Cfg;
-import jfork.nproperty.CfgIgnore;
-import jfork.nproperty.ConfigParser;
-
-@Cfg
-public class ConfigWindow extends ConfigParser
-{
- @CfgIgnore
- private static final ConfigWindow _instance = new ConfigWindow();
- @CfgIgnore
- private static final String PATH = "./config/config_window.ini";
- public static String FILE_OPEN_CURRENT_DIRECTORY_UNPACK = ".";
- public static String FILE_OPEN_CURRENT_DIRECTORY_PACK = ".";
- public static String FILE_OPEN_CURRENT_DIRECTORY = ".";
- public static String FILE_SAVE_CURRENT_DIRECTORY = ".";
- public static String CURRENT_CHRONICLE = "";
- public static int WINDOW_HEIGHT = 600;
- public static int WINDOW_WIDTH = 800;
- public static String CURRENT_ENCRYPT = ".";
- public static String CURRENT_DECRYPT = ".";
- public static String LAST_FILE_SELECTED = ".";
-
- public static void load()
- {
- try
- {
- ConfigParser.parse((_instance), PATH);
- }
- catch (IOException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e)
- {
- DebugUtil.getLogger().error("Failed to load configuration file.", e);
- }
- }
-
- public static void save(String key, String var)
- {
- try
- {
- Properties props = new Properties();
- props.load(new FileInputStream(PATH));
- props.setProperty(key, var);
- FileOutputStream output = new FileOutputStream(PATH);
- props.store(output, "Saved settings");
- output.close();
- load();
- }
- catch (Exception props)
- {
- // empty catch block
- }
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/data/GameDataName.java b/L2ClientDat/java/com/l2jmobius/data/GameDataName.java
deleted file mode 100644
index 5e4e33a0a8..0000000000
--- a/L2ClientDat/java/com/l2jmobius/data/GameDataName.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.data;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.nio.ByteBuffer;
-import java.nio.file.Files;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import com.l2jmobius.L2ClientDat;
-import com.l2jmobius.clientcryptor.DatFile;
-import com.l2jmobius.clientcryptor.crypt.DatCrypter;
-import com.l2jmobius.config.ConfigDebug;
-import com.l2jmobius.util.ByteReader;
-import com.l2jmobius.util.ByteWriter;
-import com.l2jmobius.util.Util;
-import com.l2jmobius.xml.ParamNode;
-
-public class GameDataName
-{
- private static final byte[] endFileBytes = new byte[]
- {
- 12,
- 83,
- 97,
- 102,
- 101,
- 80,
- 97,
- 99,
- 107,
- 97,
- 103,
- 101,
- 0
- };
- private final Map names = new HashMap<>();
- private final Map nameHash = new HashMap<>();
- private final Map nameLowHash = new HashMap<>();
-
- private void load(File currentFile, DatCrypter decCrypter) throws Exception
- {
- names.clear();
- nameHash.clear();
- nameLowHash.clear();
- if (decCrypter.isEncrypt())
- {
- File file = new File(currentFile.getParent(), "L2GameDataName.txt");
- if (file.exists())
- {
- List list = Files.readAllLines(file.toPath());
- for (int i = 0; i < list.size(); ++i)
- {
- String str = list.get(i);
- Map map = Util.stringToMap(str);
- String name = map.get("name");
- name = name.substring(1, name.length() - 1);
- names.put(i, name);
- nameHash.put(name, i);
- nameLowHash.put(name.toLowerCase(), i);
- }
- L2ClientDat.addLogConsole("GameDataName: Load " + names.size() + " count.", true);
- }
- }
- else
- {
- File file = new File(currentFile.getParent(), "L2GameDataName.dat");
- FileInputStream fis = new FileInputStream(file);
- if (fis.available() < 28)
- {
- L2ClientDat.addLogConsole(file.getName() + " The file is too small.", true);
- fis.close();
- return;
- }
- byte[] head = new byte[28];
- fis.read(head);
- fis.close();
- String header = new String(head, "UTF-16LE");
- if (!header.startsWith("Lineage2Ver"))
- {
- L2ClientDat.addLogConsole("GameDataName: File " + file.getName() + " not encrypted. Skip decrypt.", true);
- return;
- }
- if (Integer.valueOf(header.substring(11)).intValue() != decCrypter.getCode())
- {
- L2ClientDat.addLogConsole("GameDataName: File " + file.getName() + " encrypted code: " + header + ". Skip decrypt.", true);
- return;
- }
- L2ClientDat.addLogConsole("Unpacking [" + file.getName() + "]", true);
- DatFile dat = new DatFile(file.getAbsolutePath());
- dat.decrypt(decCrypter);
- ByteBuffer buff = dat.getBuff();
- int size = ByteReader.readUInt(buff);
- for (int i = 0; i < size; ++i)
- {
- String name = ByteReader.readUtfString(buff, false);
- if (name.contains("[") || name.contains("]"))
- {
- L2ClientDat.addLogConsole("GameDataName: Error index: " + i + " string: " + name, true);
- }
- names.put(i, name);
- nameHash.put(name, i);
- nameLowHash.put(name.toLowerCase(), i);
- }
- L2ClientDat.addLogConsole("GameDataName: Load " + names.size() + " count.", true);
- }
- }
-
- public String getString(File currentFile, DatCrypter crypter, int index) throws Exception
- {
- String val;
- if (names.isEmpty())
- {
- load(currentFile, crypter);
- }
- if (!names.containsKey(index))
- {
- L2ClientDat.addLogConsole("GameDataName: Not found index: " + index, true);
- }
- if ((val = names.getOrDefault(index, String.valueOf(index))).isEmpty())
- {
- L2ClientDat.addLogConsole("GameDataName: String name Empty!!! file: " + currentFile.getName(), true);
- }
- return "[" + val + "]";
- }
-
- public synchronized int getId(File currentFile, DatCrypter crypter, ParamNode node, String str) throws Exception
- {
- String low;
- if (!str.startsWith("[") || !str.endsWith("]"))
- {
- L2ClientDat.addLogConsole("GameDataName: String name not brackets!!! file: " + currentFile.getName() + " str: " + str + " node: " + node, true);
- }
- if ((str = str.substring(1, str.length() - 1)).isEmpty())
- {
- L2ClientDat.addLogConsole("GameDataName: String name Empty!!! file: " + currentFile.getName() + " node: " + node, true);
- return -1;
- }
- if (nameLowHash.isEmpty())
- {
- load(currentFile, crypter);
- }
- if (nameLowHash.containsKey(low = str.toLowerCase()))
- {
- return nameLowHash.get(low);
- }
- int newIndex = nameLowHash.size();
- nameLowHash.put(low, newIndex);
- nameHash.put(str, nameHash.size());
- return newIndex;
- }
-
- public void checkAndUpdate(String currentDir, DatCrypter crypter) throws Exception
- {
- if (!nameHash.isEmpty())
- {
- HashSet setList = new HashSet<>();
- TreeMap sortedMap = new TreeMap<>();
- for (String key : nameHash.keySet())
- {
- sortedMap.put(nameHash.get(key), key);
- if (setList.add(key.toLowerCase()))
- {
- continue;
- }
- L2ClientDat.addLogConsole("GameDataName: name " + key + " conflicted.", true);
- }
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- baos.write((byte[]) ByteWriter.writeInt(sortedMap.size()).array());
- for (String key : sortedMap.values())
- {
- baos.write((byte[]) ByteWriter.writeUtfString(key, false).array());
- }
- byte[] bytes = baos.toByteArray();
- byte[] resultBytes = new byte[bytes.length + endFileBytes.length];
- System.arraycopy(bytes, 0, resultBytes, 0, bytes.length);
- System.arraycopy(endFileBytes, 0, resultBytes, bytes.length, endFileBytes.length);
- String file = currentDir + "/L2GameDataName.dat";
- if (ConfigDebug.ENCRYPT)
- {
- DatFile.encrypt(resultBytes, file, crypter);
- }
- else
- {
- FileOutputStream os = new FileOutputStream(file, false);
- os.write(resultBytes);
- os.close();
- }
- L2ClientDat.addLogConsole("GameDataName: packed " + sortedMap.size() + " count.", true);
- names.clear();
- nameHash.clear();
- nameLowHash.clear();
- }
- }
-
- public void clear()
- {
- names.clear();
- nameHash.clear();
- nameLowHash.clear();
- }
-
- public static GameDataName getInstance()
- {
- return SingletonHolder._instance;
- }
-
- private static class SingletonHolder
- {
- static final GameDataName _instance = new GameDataName();
-
- private SingletonHolder()
- {
- }
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/forms/JPopupTextArea.java b/L2ClientDat/java/com/l2jmobius/forms/JPopupTextArea.java
deleted file mode 100644
index f008bdf815..0000000000
--- a/L2ClientDat/java/com/l2jmobius/forms/JPopupTextArea.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.forms;
-
-import java.awt.Frame;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import javax.swing.JComponent;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JPopupMenu;
-import javax.swing.JSeparator;
-import javax.swing.JTextArea;
-
-public class JPopupTextArea extends JTextArea
-{
- static final String COPY = "Copy (Ctrl + C)";
- static final String CUT = "Cut (Ctrl + X)";
- static final String PASTE = "Paste (Ctrl + V)";
- static final String DELETE = "Delete";
- static final String SELECTALL = "Select all (Ctrl + A)";
- static final String LINE = "Line (Ctrl + G)";
- static final String FIND = "Find (Ctrl + F)";
- Vector lineLength = new Vector<>();
-
- public JPopupTextArea()
- {
- addPopupMenu();
- }
-
- private void addPopupMenu()
- {
- JPopupMenu menu = new JPopupMenu();
- JMenuItem copyItem = new JMenuItem();
- copyItem.setAction(getActionMap().get("copy-to-clipboard"));
- copyItem.setText(COPY);
- JMenuItem cutItem = new JMenuItem();
- cutItem.setAction(getActionMap().get("cut-to-clipboard"));
- cutItem.setText(CUT);
- JMenuItem pasteItem = new JMenuItem();
- pasteItem.setAction(getActionMap().get("paste-from-clipboard"));
- pasteItem.setText(PASTE);
- JMenuItem deleteItem = new JMenuItem();
- deleteItem.setAction(getActionMap().get("delete-previous"));
- deleteItem.setText(DELETE);
- JMenuItem selectAllItem = new JMenuItem();
- selectAllItem.setAction(getActionMap().get("select-all"));
- selectAllItem.setText(SELECTALL);
- JMenuItem selectLine = new JMenuItem();
- selectLine.addActionListener(e -> goToLine());
- selectLine.setText(LINE);
- JMenuItem selectFind = new JMenuItem();
- selectFind.addActionListener(e -> searchString());
- selectFind.setText(FIND);
- menu.add(copyItem);
- menu.add(cutItem);
- menu.add(pasteItem);
- menu.add(deleteItem);
- menu.add(new JSeparator());
- menu.add(selectAllItem);
- menu.add(selectLine);
- menu.add(selectFind);
- this.add(menu);
- addMouseListener(new PopupTriggerMouseListener(menu, this));
- addKeyListener(new KeyListen());
- }
-
- void goToLine()
- {
- String lineno;
- boolean fnd;
- int no = 0;
- do
- {
- block8:
- {
- fnd = true;
- lineno = JOptionPane.showInputDialog("Line number:");
- try
- {
- no = Integer.parseInt(lineno);
- }
- catch (Exception exp)
- {
- if (lineno == null)
- {
- break block8;
- }
- JOptionPane.showMessageDialog(new Frame(), "Enter a valid line number", "Error", 0);
- fnd = false;
- }
- }
- if ((no > 0) || (lineno == null))
- {
- continue;
- }
- JOptionPane.showMessageDialog(new Frame(), "Enter a valid line number", "Error", 0);
- fnd = false;
- }
- while (!fnd);
- if (lineno != null)
- {
- getLinePosition();
- if ((no - 1) >= lineLength.size())
- {
- JOptionPane.showMessageDialog(new Frame(), "Line number does not exist", "Error", 0);
- }
- else
- {
- try
- {
- this.requestFocus();
- setCaretPosition(lineLength.elementAt(no - 1));
- }
- catch (Exception exp)
- {
- JOptionPane.showMessageDialog(new Frame(), "Bad position", "Error", 0);
- }
- }
- }
- }
-
- void searchString()
- {
- String lineno = JOptionPane.showInputDialog("Search string: ");
- if ((lineno == null) || lineno.isEmpty())
- {
- JOptionPane.showMessageDialog(new Frame(), "Enter a empty string", "Error", 0);
- return;
- }
- if (!lineno.isEmpty())
- {
- try
- {
- this.requestFocus();
- String editorText = this.getText();
- String searchValue = lineno;
- int start = editorText.indexOf(searchValue, getSelectionEnd());
- if (start != -1)
- {
- setCaretPosition(start);
- moveCaretPosition(start + searchValue.length());
- getCaret().setSelectionVisible(true);
- }
- }
- catch (Exception exp)
- {
- JOptionPane.showMessageDialog(new Frame(), "Bad position", "Error", 0);
- }
- }
- }
-
- private void getLinePosition()
- {
- lineLength = new Vector<>();
- String txt = this.getText();
- int width = getWidth();
- StringTokenizer st = new StringTokenizer(txt, "\n ", true);
- String str = " ";
- int len = 0;
- lineLength.addElement(new Integer(0));
- while (st.hasMoreTokens())
- {
- String token = st.nextToken();
- int w = getGraphics().getFontMetrics(getGraphics().getFont()).stringWidth(str + token);
- if ((w > width) || (token.charAt(0) == '\n'))
- {
- len += str.length();
- if (token.charAt(0) == '\n')
- {
- lineLength.addElement(new Integer(len));
- }
- else
- {
- lineLength.addElement(new Integer(len - 1));
- }
- str = token;
- continue;
- }
- str = str + token;
- }
- }
-
- private class KeyListen implements KeyListener
- {
- private boolean controlDown;
- private boolean gDown;
- private boolean fDown;
-
- KeyListen()
- {
- }
-
- @Override
- public void keyTyped(KeyEvent e)
- {
- }
-
- @Override
- public void keyPressed(KeyEvent e)
- {
- if (e.getKeyCode() == 17)
- {
- controlDown = true;
- }
- else if (e.getKeyCode() == 71)
- {
- gDown = true;
- }
- else if (e.getKeyCode() == 70)
- {
- fDown = true;
- }
- if (controlDown)
- {
- if (gDown)
- {
- controlDown = false;
- gDown = false;
- goToLine();
- }
- else if (fDown)
- {
- controlDown = false;
- fDown = false;
- searchString();
- }
- }
- }
-
- @Override
- public void keyReleased(KeyEvent e)
- {
- if (e.getKeyCode() == 17)
- {
- controlDown = false;
- }
- else if (e.getKeyCode() == 71)
- {
- gDown = false;
- }
- else if (e.getKeyCode() == 70)
- {
- fDown = false;
- }
- }
- }
-
- private static class PopupTriggerMouseListener extends MouseAdapter
- {
- private final JPopupMenu popup;
- private final JComponent component;
-
- public PopupTriggerMouseListener(JPopupMenu popup, JComponent component)
- {
- this.popup = popup;
- this.component = component;
- }
-
- private void showMenuIfPopupTrigger(MouseEvent e)
- {
- if (e.isPopupTrigger())
- {
- popup.show(component, e.getX() + 3, e.getY() + 3);
- }
- }
-
- @Override
- public void mousePressed(MouseEvent e)
- {
- showMenuIfPopupTrigger(e);
- }
-
- @Override
- public void mouseReleased(MouseEvent e)
- {
- showMenuIfPopupTrigger(e);
- }
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/listeners/FormatListener.java b/L2ClientDat/java/com/l2jmobius/listeners/FormatListener.java
deleted file mode 100644
index ec6043e147..0000000000
--- a/L2ClientDat/java/com/l2jmobius/listeners/FormatListener.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.listeners;
-
-public interface FormatListener
-{
- String decode(String var1);
-
- String encode(String var1);
-}
diff --git a/L2ClientDat/java/com/l2jmobius/util/ByteReader.java b/L2ClientDat/java/com/l2jmobius/util/ByteReader.java
deleted file mode 100644
index 3cbf1144ae..0000000000
--- a/L2ClientDat/java/com/l2jmobius/util/ByteReader.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.util;
-
-import java.io.EOFException;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-
-public class ByteReader
-{
- private static Charset defaultCharset = Charset.forName("cp1252");
- private static Charset utf16leCharset = Charset.forName("utf-16le");
-
- public static char readChar(ByteBuffer buffer)
- {
- return (char) buffer.get();
- }
-
- public static int readUByte(ByteBuffer buffer)
- {
- return buffer.get() & 255;
- }
-
- public static int readInt(ByteBuffer buffer)
- {
- return Integer.reverseBytes(buffer.getInt());
- }
-
- public static int readUInt(ByteBuffer buffer)
- {
- return readInt(buffer);
- }
-
- public static short readShort(ByteBuffer buffer)
- {
- return Short.reverseBytes(buffer.getShort());
- }
-
- public static double readDouble(ByteBuffer buffer)
- {
- return Double.longBitsToDouble(Long.reverseBytes(buffer.getLong()));
- }
-
- public static long readLong(ByteBuffer buffer)
- {
- return Long.reverseBytes(buffer.getLong());
- }
-
- public static float readFloat(ByteBuffer buffer)
- {
- return Float.intBitsToFloat(Integer.reverseBytes(buffer.getInt()));
- }
-
- public static int readCompactInt(ByteBuffer input) throws IOException
- {
- int output = 0;
- boolean signed = false;
- for (int i = 0; i < 5; ++i)
- {
- int x = input.get() & 255;
- if (x < 0)
- {
- throw new EOFException();
- }
- if (i == 0)
- {
- if ((x & 128) > 0)
- {
- signed = true;
- }
- output |= x & 63;
- if ((x & 64) != 0)
- {
- continue;
- }
- break;
- }
- if (i == 4)
- {
- output |= (x & 31) << 27;
- continue;
- }
- output |= (x & 127) << (6 + ((i - 1) * 7));
- if ((x & 128) == 0)
- {
- break;
- }
- }
- if (signed)
- {
- output *= -1;
- }
- return output;
- }
-
- public static String readRGB(ByteBuffer buffer)
- {
- String g;
- String b;
- String r = Integer.toHexString(buffer.get() & 255).toUpperCase();
- if (r.length() < 2)
- {
- r = "0" + r;
- }
- if ((g = Integer.toHexString(buffer.get() & 255).toUpperCase()).length() < 2)
- {
- g = "0" + g;
- }
- if ((b = Integer.toHexString(buffer.get() & 255).toUpperCase()).length() < 2)
- {
- b = "0" + b;
- }
- return r + g + b;
- }
-
- public static String readRGBA(ByteBuffer buffer)
- {
- String a = Integer.toHexString(buffer.get() & 255).toUpperCase();
- if (a.length() < 2)
- {
- a = "0" + a;
- }
- return a + readRGB(buffer);
- }
-
- public static String readUtfString(ByteBuffer buffer, boolean isRaw) throws Exception
- {
- int size = readInt(buffer);
- if (size <= 0)
- {
- return "";
- }
- if (size > 1000000)
- {
- throw new Exception("To much data.");
- }
- byte[] bytes = new byte[size];
- try
- {
- for (int i = 0; i < size; i += 2)
- {
- bytes[i + 1] = buffer.get();
- bytes[i] = buffer.get();
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- return checkAndReplaceNewLine(isRaw, new String(new String(bytes, "Unicode").getBytes("UTF-8"), "UTF-8"));
- }
-
- public static String readString(ByteBuffer input, boolean isRaw) throws IOException
- {
- int len = readCompactInt(input);
- if (len == 0)
- {
- return "";
- }
- byte[] bytes = new byte[len > 0 ? len : -2 * len];
- input.get(bytes);
- return checkAndReplaceNewLine(isRaw, new String(bytes, 0, bytes.length - (len > 0 ? 1 : 2), len > 0 ? defaultCharset : utf16leCharset).intern());
- }
-
- private static String checkAndReplaceNewLine(boolean isRaw, String str)
- {
- if (!isRaw && str.contains("\r\n"))
- {
- str = str.replace("\r\n", "\\r\\n");
- }
- return str;
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/util/ByteWriter.java b/L2ClientDat/java/com/l2jmobius/util/ByteWriter.java
deleted file mode 100644
index 3d8f655ffd..0000000000
--- a/L2ClientDat/java/com/l2jmobius/util/ByteWriter.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.util;
-
-import java.nio.Buffer;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.charset.Charset;
-
-public class ByteWriter
-{
- private static final ByteOrder BYTE_ORDER = ByteOrder.LITTLE_ENDIAN;
- private static Charset defaultCharset = Charset.forName("ascii");
- private static Charset utf16leCharset = Charset.forName("utf-16le");
-
- public static Buffer writeChar(byte value)
- {
- ByteBuffer buffer = ByteBuffer.allocate(1).order(BYTE_ORDER);
- buffer.put(value);
- return buffer;
- }
-
- public static Buffer writeCompactInt(int count)
- {
- byte[] b = compactIntToByteArray(count);
- ByteBuffer buffer = ByteBuffer.allocate(b.length).order(BYTE_ORDER);
- buffer.put(b);
- return buffer;
- }
-
- public static Buffer writeByte(byte value)
- {
- ByteBuffer buffer = ByteBuffer.allocate(1).order(BYTE_ORDER);
- buffer.put(value);
- return buffer;
- }
-
- public static Buffer writeUByte(short value)
- {
- ByteBuffer buffer = ByteBuffer.allocate(1).order(BYTE_ORDER);
- buffer.put((byte) value);
- return buffer;
- }
-
- public static Buffer writeInt(int value)
- {
- ByteBuffer buffer = ByteBuffer.allocate(4).order(BYTE_ORDER);
- buffer.putInt(value);
- return buffer;
- }
-
- public static Buffer writeUInt(int value)
- {
- ByteBuffer buffer = ByteBuffer.allocate(4).order(BYTE_ORDER);
- buffer.putInt(value);
- return buffer;
- }
-
- public static Buffer writeShort(short value)
- {
- ByteBuffer buffer = ByteBuffer.allocate(2).order(BYTE_ORDER);
- buffer.putShort(value);
- return buffer;
- }
-
- public static Buffer writeUShort(int value)
- {
- ByteBuffer buffer = ByteBuffer.allocate(2).order(BYTE_ORDER);
- buffer.put((byte) (value & 255));
- buffer.put((byte) ((value & 65280) >> 8));
- return buffer;
- }
-
- public static Buffer writeRGB(String rgb)
- {
- ByteBuffer buffer = ByteBuffer.allocate(3).order(BYTE_ORDER);
- buffer.put((byte) Integer.parseInt(rgb.substring(0, 2), 16));
- buffer.put((byte) Integer.parseInt(rgb.substring(2, 4), 16));
- buffer.put((byte) Integer.parseInt(rgb.substring(4, 6), 16));
- return buffer;
- }
-
- public static Buffer writeRGBA(String rgba)
- {
- ByteBuffer buffer = ByteBuffer.allocate(4).order(BYTE_ORDER);
- buffer.put((byte[]) writeRGB(rgba.substring(0, 6)).array());
- buffer.put((byte) Integer.parseInt(rgba.substring(6, 8), 16));
- return buffer;
- }
-
- public static Buffer writeUtfString(String str, boolean isRaw)
- {
- int size = str.length();
- if (size <= 0)
- {
- return ByteBuffer.allocate(4).order(BYTE_ORDER).putInt(0);
- }
- if (!isRaw)
- {
- str = checkAndReplaceNewLine(str);
- size = str.length();
- }
- ByteBuffer buffer = ByteBuffer.allocate((size * 2) + 4).order(BYTE_ORDER);
- buffer.putInt(size * 2);
- for (int i = 0; i < size; ++i)
- {
- buffer.putChar(str.charAt(i));
- }
- return buffer;
- }
-
- public static Buffer writeString(String s, boolean isRaw)
- {
- if ((s == null) || s.isEmpty())
- {
- return writeCompactInt(0);
- }
- if (!isRaw)
- {
- s = checkAndReplaceNewLine(s);
- }
- s = s + '\u0000';
- boolean def = defaultCharset.newEncoder().canEncode(s);
- byte[] bytes = s.getBytes(def ? defaultCharset : utf16leCharset);
- byte[] bSize = compactIntToByteArray(def ? bytes.length : (-bytes.length) / 2);
- ByteBuffer buffer = ByteBuffer.allocate(bytes.length + bSize.length).order(BYTE_ORDER);
- buffer.put(bSize);
- buffer.put(bytes);
- return buffer;
- }
-
- public static Buffer writeDouble(double value)
- {
- ByteBuffer buffer = ByteBuffer.allocate(8).order(BYTE_ORDER);
- buffer.putDouble(value);
- return buffer;
- }
-
- public static Buffer writeFloat(float value)
- {
- ByteBuffer buffer = ByteBuffer.allocate(4).order(BYTE_ORDER);
- buffer.putFloat(value);
- return buffer;
- }
-
- public static Buffer writeLong(long value)
- {
- ByteBuffer buffer = ByteBuffer.allocate(8).order(BYTE_ORDER);
- buffer.putLong(value);
- return buffer;
- }
-
- private static byte[] compactIntToByteArray(int v)
- {
- boolean negative = v < 0;
- v = Math.abs(v);
- int[] bytes = new int[]
- {
- v & 63,
- (v >> 6) & 127,
- (v >> 13) & 127,
- (v >> 20) & 127,
- (v >> 27) & 127
- };
- if (negative)
- {
- int[] arrn = bytes;
- arrn[0] = arrn[0] | 128;
- }
- int size = 5;
- for (int i = 4; (i > 0) && (bytes[i] == 0); --i)
- {
- --size;
- }
- byte[] res = new byte[size];
- for (int i = 0; i < size; ++i)
- {
- if (i != (size - 1))
- {
- int[] arrn = bytes;
- int n = i;
- arrn[n] = arrn[n] | (i == 0 ? 64 : 128);
- }
- res[i] = (byte) bytes[i];
- }
- return res;
- }
-
- private static String checkAndReplaceNewLine(String str)
- {
- if (str.contains("\\r\\n"))
- {
- str = str.replace("\\r\\n", "\r\n");
- }
- return str;
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/util/DebugUtil.java b/L2ClientDat/java/com/l2jmobius/util/DebugUtil.java
deleted file mode 100644
index bfe2a59f72..0000000000
--- a/L2ClientDat/java/com/l2jmobius/util/DebugUtil.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.util;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
-import org.apache.log4j.xml.DOMConfigurator;
-
-import com.l2jmobius.config.ConfigDebug;
-import com.l2jmobius.xml.Variant;
-
-public class DebugUtil
-{
- private static Logger _log = LogManager.getLogger(DebugUtil.class);
-
- public static void debug(String message)
- {
- if (ConfigDebug.DAT_DEBUG_MSG)
- {
- _log.info(message);
- }
- }
-
- public static void debugPos(int pos, String name, Variant val)
- {
- if (ConfigDebug.DAT_DEBUG_POS)
- {
- _log.info("pos: " + pos + " " + name + ": " + val);
- if ((ConfigDebug.DAT_DEBUG_POS_LIMIT != 0) && (pos > ConfigDebug.DAT_DEBUG_POS_LIMIT))
- {
- System.exit(0);
- }
- }
- }
-
- public static void save(ByteBuffer buffer, File path)
- {
- if (ConfigDebug.SAVE_DECODE)
- {
- try
- {
- String unpackDirPath = path.getParent() + "/" + "!decrypted";
- File decryptedDir = new File(unpackDirPath);
- decryptedDir.mkdir();
- File file = new File(decryptedDir + "/" + path.getName());
- FileOutputStream fos = new FileOutputStream(file);
- fos.write(buffer.array());
- fos.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
-
- public static Logger getLogger()
- {
- return _log;
- }
-
- static
- {
- DOMConfigurator.configure("./config/log4j.xml");
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/util/Util.java b/L2ClientDat/java/com/l2jmobius/util/Util.java
deleted file mode 100644
index d0113fc073..0000000000
--- a/L2ClientDat/java/com/l2jmobius/util/Util.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.util;
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.tools.Diagnostic;
-import javax.tools.DiagnosticCollector;
-import javax.tools.JavaCompiler;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.ToolProvider;
-
-public class Util
-{
- public static void printBytes(String name, byte[] buffer)
- {
- StringBuilder builder = new StringBuilder(buffer.length);
- builder.append(name).append(": [");
- for (byte b : buffer)
- {
- builder.append(b).append(" ");
- }
- builder.append("]");
- DebugUtil.getLogger().info(builder.toString());
- }
-
- public static boolean compareBuffers(byte[] b1, byte[] b2)
- {
- if ((b1 == null) || (b2 == null) || (b1.length != b2.length))
- {
- return false;
- }
- for (int i = 0; i < b1.length; ++i)
- {
- if (b1[i] == b2[i])
- {
- continue;
- }
- return false;
- }
- return true;
- }
-
- private static String printData(byte[] data, int len)
- {
- int a;
- int charpoint;
- byte t1;
- StringBuilder result = new StringBuilder();
- int counter = 0;
- for (int i = 0; i < len; ++i)
- {
- if ((counter % 16) == 0)
- {
- result.append(fillHex(i, 4) + ": ");
- }
- result.append(fillHex(data[i] & 255, 2) + " ");
- if (++counter != 16)
- {
- continue;
- }
- result.append(" ");
- charpoint = i - 15;
- for (a = 0; a < 16; ++a)
- {
- if (((t1 = data[charpoint++]) > 31) && (t1 < 128))
- {
- result.append((char) t1);
- continue;
- }
- result.append('.');
- }
- result.append("\n");
- counter = 0;
- }
- int rest = data.length % 16;
- if (rest > 0)
- {
- for (int i = 0; i < (17 - rest); ++i)
- {
- result.append(" ");
- }
- charpoint = data.length - rest;
- for (a = 0; a < rest; ++a)
- {
- if (((t1 = data[charpoint++]) > 31) && (t1 < 128))
- {
- result.append((char) t1);
- continue;
- }
- result.append('.');
- }
- result.append("\n");
- }
- return result.toString();
- }
-
- private static String fillHex(int data, int digits)
- {
- String number = Integer.toHexString(data);
- for (int i = number.length(); i < digits; ++i)
- {
- number = "0" + number;
- }
- return number;
- }
-
- public static String printData(byte[] blop)
- {
- return printData(blop, blop.length);
- }
-
- public static List loadFiles(String dir, String prefix)
- {
- ArrayList list = new ArrayList<>();
- File folder = new File(dir);
- for (File listOfFile : folder.listFiles())
- {
- if (listOfFile.isFile())
- {
- if (!listOfFile.getName().endsWith(prefix))
- {
- continue;
- }
- list.add(listOfFile);
- continue;
- }
- if (!listOfFile.isDirectory())
- {
- continue;
- }
- File folder2 = new File(dir + listOfFile.getName() + "/");
- for (File aListOfFiles2 : folder2.listFiles())
- {
- if (!aListOfFiles2.getName().endsWith(prefix))
- {
- continue;
- }
- list.add(aListOfFiles2);
- }
- }
- return list;
- }
-
- public static String[] getDirsNames(String dir, String prefix)
- {
- ArrayList list = new ArrayList<>();
- File folder = new File(dir);
- File[] listOfFiles = folder.listFiles();
- if (listOfFiles == null)
- {
- return null;
- }
- for (File listOfFile : listOfFiles)
- {
- if (!listOfFile.isDirectory() || !listOfFile.getName().endsWith(prefix))
- {
- continue;
- }
- list.add(listOfFile.getName());
- }
- String[] text = new String[list.size()];
- int i = 0;
- Iterator iterator = list.iterator();
- while (iterator.hasNext())
- {
- text[i] = iterator.next();
- ++i;
- }
- return text;
- }
-
- public static String[] getFilesNames(String dir, String prefix)
- {
- ArrayList list = new ArrayList<>();
- File folder = new File(dir);
- File[] listOfFiles = folder.listFiles();
- if (listOfFiles == null)
- {
- return null;
- }
- for (File listOfFile : listOfFiles)
- {
- if (!listOfFile.isFile() || !listOfFile.getName().endsWith(prefix))
- {
- continue;
- }
- list.add(listOfFile.getName().replace(prefix, ""));
- }
- String[] text = new String[list.size()];
- int i = 0;
- Iterator iterator = list.iterator();
- while (iterator.hasNext())
- {
- text[i] = iterator.next();
- ++i;
- }
- return text;
- }
-
- public static String printData(ByteBuffer buf)
- {
- byte[] data = new byte[buf.remaining()];
- buf.get(data);
- String hex = printData(data, data.length);
- buf.position(buf.position() - data.length);
- return hex;
- }
-
- public static List splitList(String s)
- {
- if (s.startsWith("{"))
- {
- s = s.substring(1, s.length() - 1);
- }
- ArrayList res = new ArrayList<>();
- StringBuffer buff = new StringBuffer();
- int level = 0;
- for (char part : s.toCharArray())
- {
- if ((part == '{') || (part == '['))
- {
- ++level;
- }
- else if ((part == '}') || (part == ']'))
- {
- --level;
- }
- else if ((part == ';') && (level == 0))
- {
- res.add(buff.toString());
- buff = new StringBuffer();
- continue;
- }
- buff.append(part);
- }
- res.add(buff.toString());
- return res;
- }
-
- public static Map stringToMap(String id)
- {
- LinkedHashMap map = new LinkedHashMap<>();
- for (String str : id.split("\t"))
- {
- if (!str.contains("="))
- {
- continue;
- }
- int index = str.indexOf("=");
- String key = str.substring(0, index);
- String val = str.substring(index + 1, str.length());
- map.put(key, val);
- }
- return map;
- }
-
- public static String mapToString(Map map)
- {
- StringBuilder builder = new StringBuilder();
- for (String key : map.keySet())
- {
- builder.append(key).append("=").append(map.get(key)).append("\t");
- }
- return builder.toString();
- }
-
- @SuppressWarnings(
- {
- "rawtypes",
- "unchecked"
- })
- public static void compileJavaClass(String sourceFile)
- {
- try
- {
- DiagnosticCollector diagnostics = new DiagnosticCollector();
- JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
- StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
- Iterable extends JavaFileObject> compilationUnit = fileManager.getJavaFileObjectsFromFiles(loadFiles(sourceFile, ".java"));
- JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, null, null, compilationUnit);
- if (!task.call().booleanValue())
- {
- for (Object diagnostic : diagnostics.getDiagnostics())
- {
- final Diagnostic d = (Diagnostic) diagnostic;
- System.out.format("Error on line %d in %s%n", d.getLineNumber(), ((JavaFileObject) d.getSource()).toUri());
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- public static Object loadJavaClass(String className, String path)
- {
- try
- {
- @SuppressWarnings("resource")
- URLClassLoader classLoader = new URLClassLoader(new URL[]
- {
- new File(path).toURI().toURL()
- });
- Class> loadedClass = classLoader.loadClass(className);
- return loadedClass.newInstance();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- return null;
- }
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/CryptVersionParser.java b/L2ClientDat/java/com/l2jmobius/xml/CryptVersionParser.java
deleted file mode 100644
index 6402f7a237..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/CryptVersionParser.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml;
-
-import java.io.File;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-import com.l2jmobius.clientcryptor.crypt.BlowFishDatCrypter;
-import com.l2jmobius.clientcryptor.crypt.DESDatCrypter;
-import com.l2jmobius.clientcryptor.crypt.DatCrypter;
-import com.l2jmobius.clientcryptor.crypt.RSADatCrypter;
-import com.l2jmobius.clientcryptor.crypt.XorDatCrypter;
-import com.l2jmobius.util.DebugUtil;
-
-public class CryptVersionParser
-{
- private static Map encryptKeys = new LinkedHashMap<>();
- private static Map decryptKeys = new LinkedHashMap<>();
- private static CryptVersionParser _parser = new CryptVersionParser();
-
- public static CryptVersionParser getInstance()
- {
- return _parser;
- }
-
- private CryptVersionParser()
- {
- parseCryptVersion();
- }
-
- private static void parseCryptVersion()
- {
- File def = new File("./config/cryptVersion.xml");
- if (def.exists())
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setValidating(false);
- factory.setIgnoringElementContentWhitespace(true);
- factory.setIgnoringComments(true);
- try
- {
- Document doc = factory.newDocumentBuilder().parse(def);
- Node defsNode = doc.getFirstChild();
- while (defsNode != null)
- {
- if (defsNode.getNodeName().equals("keys"))
- {
- for (Node defNode = defsNode.getFirstChild(); defNode != null; defNode = defNode.getNextSibling())
- {
- if (!defNode.getNodeName().equals("key"))
- {
- continue;
- }
- String name = defNode.getAttributes().getNamedItem("name").getNodeValue();
- String type = defNode.getAttributes().getNamedItem("type").getNodeValue().toLowerCase();
- int code = Integer.parseInt(defNode.getAttributes().getNamedItem("code").getNodeValue().toLowerCase());
- boolean isDecrypt = Boolean.parseBoolean(defNode.getAttributes().getNamedItem("decrypt").getNodeValue());
- boolean useStructure = Boolean.parseBoolean(defNode.getAttributes().getNamedItem("useStructure").getNodeValue());
- String extension = defNode.getAttributes().getNamedItem("extension").getNodeValue();
- DatCrypter dat = null;
- switch (type)
- {
- case "rsa":
- {
- String modulus = defNode.getAttributes().getNamedItem("modulus").getNodeValue();
- String exp = defNode.getAttributes().getNamedItem("exp").getNodeValue();
- dat = new RSADatCrypter(code, modulus, exp, isDecrypt);
- break;
- }
- case "xor":
- {
- dat = new XorDatCrypter(code, Integer.parseInt(defNode.getAttributes().getNamedItem("key").getNodeValue()), isDecrypt);
- break;
- }
- case "blowfish":
- {
- dat = new BlowFishDatCrypter(code, defNode.getAttributes().getNamedItem("key").getNodeValue(), isDecrypt);
- break;
- }
- case "des":
- {
- dat = new DESDatCrypter(code, defNode.getAttributes().getNamedItem("key").getNodeValue(), isDecrypt);
- }
- }
- if (dat == null)
- {
- continue;
- }
- dat.addFileExtension(extension);
- dat.setUseStructure(useStructure);
- if (isDecrypt)
- {
- decryptKeys.put(name, dat);
- continue;
- }
- encryptKeys.put(name, dat);
- }
- }
- defsNode = doc.getNextSibling();
- }
- }
- catch (Exception e)
- {
- DebugUtil.getLogger().error(e.getMessage(), e);
- }
- }
- }
-
- public Map getEncryptKey()
- {
- return encryptKeys;
- }
-
- public Map getDecryptKeys()
- {
- return decryptKeys;
- }
-
- public DatCrypter getEncryptKey(String s)
- {
- return encryptKeys.get(s);
- }
-
- public DatCrypter getDecryptKey(String s)
- {
- return decryptKeys.get(s);
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/Descriptor.java b/L2ClientDat/java/com/l2jmobius/xml/Descriptor.java
deleted file mode 100644
index bd9eb0cb10..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/Descriptor.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml;
-
-import java.util.List;
-
-import com.l2jmobius.listeners.FormatListener;
-
-public class Descriptor
-{
- private final String _alias;
- private final String _filePattern;
- private final List _nodes;
- private boolean _isRawData;
- private boolean _isSafePackage;
- private FormatListener _format;
-
- Descriptor(String alias, String filePattern, List nodes)
- {
- _alias = alias;
- _filePattern = filePattern;
- _nodes = nodes;
- _isRawData = false;
- }
-
- void setIsRawData(boolean value)
- {
- _isRawData = value;
- }
-
- public void setIsSafePackage(boolean value)
- {
- _isSafePackage = value;
- }
-
- boolean isRawData()
- {
- return _isRawData;
- }
-
- public boolean isSafePackage()
- {
- return _isSafePackage;
- }
-
- public String getAlias()
- {
- return _alias;
- }
-
- public String getFilePattern()
- {
- return _filePattern;
- }
-
- List getNodes()
- {
- return _nodes;
- }
-
- public void setFormat(FormatListener format)
- {
- _format = format;
- }
-
- public FormatListener getFormat()
- {
- return _format;
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/DescriptorLink.java b/L2ClientDat/java/com/l2jmobius/xml/DescriptorLink.java
deleted file mode 100644
index 12c797c47d..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/DescriptorLink.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml;
-
-public class DescriptorLink
-{
- private final String dir;
- private final String namePattern;
- private final String linkFile;
- private final String linkVersion;
-
- public DescriptorLink(String dir, String namePattern, String linkFile, String linkVersion)
- {
- this.dir = dir;
- this.namePattern = namePattern;
- this.linkFile = linkFile;
- this.linkVersion = linkVersion;
- }
-
- public String getFilePattern()
- {
- return dir;
- }
-
- public String getNamePattern()
- {
- return namePattern;
- }
-
- public String getLinkFile()
- {
- return linkFile;
- }
-
- public String getLinkVersion()
- {
- return linkVersion;
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/DescriptorParser.java b/L2ClientDat/java/com/l2jmobius/xml/DescriptorParser.java
deleted file mode 100644
index e69aafcad5..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/DescriptorParser.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-import com.l2jmobius.listeners.FormatListener;
-import com.l2jmobius.util.DebugUtil;
-import com.l2jmobius.util.Util;
-import com.l2jmobius.xml.exceptions.CycleArgumentException;
-
-public class DescriptorParser
-{
- private static DescriptorParser _parser = new DescriptorParser();
- private final Map> _descriptors = new HashMap<>();
- private final Map> _definitions = new HashMap<>();
- private final Map> _links = new HashMap<>();
-
- private DescriptorParser()
- {
- load();
- }
-
- public static DescriptorParser getInstance()
- {
- return _parser;
- }
-
- private void load()
- {
- parseDefinitions();
- Util.loadFiles("./structure/", ".xml").forEach(this::parseDescriptor);
- }
-
- private void parseDefinitions()
- {
- File def = new File("./!definitions.xml");
- if (def.exists())
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setValidating(false);
- factory.setIgnoringElementContentWhitespace(true);
- factory.setIgnoringComments(true);
- try
- {
- Document doc = factory.newDocumentBuilder().parse(def);
- Node defsNode = doc.getFirstChild();
- while (defsNode != null)
- {
- if (defsNode.getNodeName().equals("definitions"))
- {
- for (Node defNode = defsNode.getFirstChild(); defNode != null; defNode = defNode.getNextSibling())
- {
- if (!defNode.getNodeName().equals("definition"))
- {
- continue;
- }
- String defName = defNode.getAttributes().getNamedItem("name").getNodeValue();
- List nodes = parseNodes(defNode, true, new HashSet(), "definitions->" + defName);
- _definitions.put(defName, nodes);
- }
- }
- defsNode = doc.getNextSibling();
- }
- }
- catch (Exception e)
- {
- DebugUtil.getLogger().error(e.getMessage(), e);
- }
- }
- }
-
- private void parseDescriptor(File file)
- {
- if (!file.exists())
- {
- DebugUtil.debug("File " + file.getName() + " not found.");
- }
- try
- {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setValidating(false);
- factory.setIgnoringElementContentWhitespace(true);
- factory.setIgnoringComments(true);
- Document doc = factory.newDocumentBuilder().parse(file);
- Node fileNode0 = doc.getFirstChild();
- while (fileNode0 != null)
- {
- if (fileNode0.getNodeName().equalsIgnoreCase("list"))
- {
- for (Node fileNode = fileNode0.getFirstChild(); fileNode != null; fileNode = fileNode.getNextSibling())
- {
- String dir;
- Object obj;
- String namePattern;
- Map versions;
- if (fileNode.getNodeName().equalsIgnoreCase("link"))
- {
- dir = file.getName().substring(0, file.getName().length() - 4);
- namePattern = fileNode.getAttributes().getNamedItem("pattern").getNodeValue();
- String linkFile = fileNode.getAttributes().getNamedItem("file").getNodeValue();
- String linkVersion = fileNode.getAttributes().getNamedItem("version").getNodeValue();
- List list = _links.get(dir);
- if (list == null)
- {
- list = new ArrayList<>();
- }
- list.add(new DescriptorLink(dir, namePattern, linkFile, linkVersion));
- _links.put(dir, list);
- continue;
- }
- if (!fileNode.getNodeName().equalsIgnoreCase("file"))
- {
- continue;
- }
- dir = file.getName().substring(0, file.getName().length() - 4);
- namePattern = fileNode.getAttributes().getNamedItem("pattern").getNodeValue();
- boolean isRawData = parseBoolNode(fileNode, "isRaw", false);
- boolean isSafePackage = parseBoolNode(fileNode, "isSafePackage", false);
- String formatName = parseStringNode(fileNode, "format", null);
- DebugUtil.debug("Boot of parsing file: " + namePattern);
- List nodes = parseNodes(fileNode, false, new HashSet(), dir + "->" + namePattern);
- Descriptor desc = new Descriptor(file.getName(), namePattern, nodes);
- desc.setIsRawData(isRawData);
- desc.setIsSafePackage(isSafePackage);
- if ((formatName != null) && ((obj = Util.loadJavaClass(formatName, "./structure/format/")) instanceof FormatListener))
- {
- desc.setFormat((FormatListener) obj);
- }
- if ((versions = _descriptors.get(dir)) == null)
- {
- versions = new HashMap<>();
- }
- versions.put(namePattern, desc);
- _descriptors.put(dir, versions);
- DebugUtil.debug("End of parsing file: " + namePattern);
- }
- }
- fileNode0 = doc.getNextSibling();
- }
- }
- catch (Exception e)
- {
- DebugUtil.getLogger().error(e.getMessage(), e);
- }
- }
-
- private List parseNodes(Node fileNode, boolean isHideName, Set names, String fileName) throws Exception
- {
- HashMap defsCounter = new HashMap<>();
- LinkedList nodes = new LinkedList<>();
- for (Node node = fileNode.getFirstChild(); node != null; node = node.getNextSibling())
- {
- ParamNode beginNode;
- String nodeName = node.getNodeName();
- if (nodeName.equals("#text"))
- {
- continue;
- }
- boolean isHide = isHideName || parseBoolNode(node, "hidden", true);
- if (node.getAttributes().getNamedItem("name") == null)
- {
- DebugUtil.getLogger().warn("Node name == null, fileName: " + fileName);
- continue;
- }
- String entityName = node.getAttributes().getNamedItem("name").getNodeValue();
- if (nodeName.equalsIgnoreCase("node"))
- {
- String type = node.getAttributes().getNamedItem("reader").getNodeValue();
- if (_definitions.containsKey(type))
- {
- if (!defsCounter.containsKey(type))
- {
- defsCounter.put(type, 1);
- }
- else
- {
- defsCounter.put(type, defsCounter.get(type) + 1);
- }
- List defNodes = _definitions.get(type);
- for (ParamNode defNode : defNodes)
- {
- ParamNode copied = defNode.copy();
- copied.setName(entityName);
- if (isHide)
- {
- copied.setHidden();
- }
- nodes.add(copied);
- }
- }
- else
- {
- ParamNode dataNode = new ParamNode(entityName, ParamNodeType.VARIABLE, ParamType.valueOf(type));
- if (isHide)
- {
- dataNode.setHidden();
- }
- nodes.add(dataNode);
- DebugUtil.debug("Found node: " + dataNode.getName());
- }
- if (names.contains(entityName))
- {
- DebugUtil.getLogger().warn("Node name duplicated [" + entityName + "] fileName: " + fileName);
- }
- names.add(entityName);
- continue;
- }
- if (nodeName.equalsIgnoreCase("for"))
- {
- String iteratorName = entityName;
- boolean skipWriteSize = parseBoolNode(node, "skipWriteSize", false);
- int size = -1;
- if (node.getAttributes().getNamedItem("size") != null)
- {
- String sizeStr = node.getAttributes().getNamedItem("size").getNodeValue();
- if (sizeStr.startsWith("#"))
- {
- iteratorName = sizeStr.substring(1);
- }
- else
- {
- size = Integer.parseInt(sizeStr);
- }
- }
- if (size == 0)
- {
- DebugUtil.getLogger().warn("Size of cycle [" + iteratorName + "] was set to zero. Deprecated cycle?");
- }
- DebugUtil.debug("Found cycle for variable: " + entityName);
- ParamNode beginNode2 = new ParamNode(entityName, ParamNodeType.FOR, null);
- if (size >= 0)
- {
- beginNode2.setSize(size);
- }
- if (isHide)
- {
- beginNode2.setHidden();
- }
- beginNode2.setSkipWriteSize(skipWriteSize);
- beginNode2.addSubNodes(parseNodes(node, false, names, fileName));
- beginNode2.setCycleName(iteratorName);
- nodes.add(beginNode2);
- boolean iteratorFound = false;
- for (ParamNode n : nodes)
- {
- if (!iteratorName.equals(n.getName()))
- {
- continue;
- }
- n.setIterator();
- iteratorFound = true;
- break;
- }
- if (iteratorFound || (size >= 0))
- {
- continue;
- }
- throw new CycleArgumentException("Invalid argument [" + iteratorName + "] for [cycle]");
- }
- if (nodeName.equalsIgnoreCase("wrapper"))
- {
- beginNode = new ParamNode(entityName, ParamNodeType.WRAPPER, null);
- beginNode.addSubNodes(parseNodes(node, true, names, fileName));
- nodes.add(beginNode);
- DebugUtil.debug("Found [wrapper] data " + entityName);
- continue;
- }
- if (nodeName.equalsIgnoreCase("write"))
- {
- beginNode = new ParamNode(entityName, ParamNodeType.CONSTANT, ParamType.STRING);
- beginNode.setHidden();
- nodes.add(beginNode);
- DebugUtil.debug("Found [constant] data: " + entityName);
- continue;
- }
- if (!nodeName.equalsIgnoreCase("if"))
- {
- continue;
- }
- String paramName = node.getAttributes().getNamedItem("param").getNodeValue();
- String vsl = node.getAttributes().getNamedItem("val").getNodeValue();
- if (!paramName.startsWith("#"))
- {
- throw new Exception("Invalid argument [" + entityName + "] for [if]");
- }
- paramName = paramName.substring(1);
- ParamNode beginNode3 = new ParamNode(entityName, ParamNodeType.IF, null);
- beginNode3.setParamIf(paramName);
- beginNode3.setValIf(vsl);
- beginNode3.addSubNodes(parseNodes(node, false, names, fileName));
- nodes.add(beginNode3);
- DebugUtil.debug("Found [if] data: " + entityName);
- }
- return nodes;
- }
-
- public Descriptor findDescriptorForFile(String dir, String fileName)
- {
- List listDes = _links.get(dir);
- if (listDes == null)
- {
- return null;
- }
- for (DescriptorLink desc : listDes)
- {
- Map versions;
- if (!fileName.toLowerCase().matches(desc.getNamePattern().toLowerCase()) || !_descriptors.containsKey(desc.getLinkFile()) || !(versions = _descriptors.get(desc.getLinkFile())).containsKey(desc.getLinkVersion()))
- {
- continue;
- }
- return versions.get(desc.getLinkVersion());
- }
- return null;
- }
-
- private boolean parseBoolNode(Node node, String name, boolean def)
- {
- if (node.getAttributes() == null)
- {
- return def;
- }
- if (node.getAttributes().getNamedItem(name) == null)
- {
- return def;
- }
- return node.getAttributes().getNamedItem(name).getNodeValue().equalsIgnoreCase("true");
- }
-
- private String parseStringNode(Node node, String name, String def)
- {
- if (node.getAttributes() == null)
- {
- return def;
- }
- if (node.getAttributes().getNamedItem(name) == null)
- {
- return def;
- }
- return node.getAttributes().getNamedItem(name).getNodeValue();
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/DescriptorReader.java b/L2ClientDat/java/com/l2jmobius/xml/DescriptorReader.java
deleted file mode 100644
index a259dfafe0..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/DescriptorReader.java
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml;
-
-import java.io.File;
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.l2jmobius.L2ClientDat;
-import com.l2jmobius.clientcryptor.crypt.DatCrypter;
-import com.l2jmobius.config.ConfigDebug;
-import com.l2jmobius.data.GameDataName;
-import com.l2jmobius.util.ByteReader;
-import com.l2jmobius.util.DebugUtil;
-
-public class DescriptorReader
-{
- private static DescriptorReader _instance = new DescriptorReader();
- final String eq = "=";
- final String tab = "\t";
- final String nl = System.getProperty("line.separator");
- final String semi = ";";
- final String lb = "[";
- final String rb = "]";
-
- public static DescriptorReader getInstance()
- {
- return _instance;
- }
-
- public String parseData(File currentFile, DatCrypter crypter, Descriptor desc, ByteBuffer data) throws Exception
- {
- String stringData;
- if (desc.isRawData())
- {
- StringBuilder builder = new StringBuilder();
- readVariables(currentFile, crypter, desc.getNodes().get(0), new HashMap(), data, builder, true);
- stringData = builder.toString();
- }
- else
- {
- stringData = this.parseData(currentFile, crypter, data, null, desc.getNodes(), 1, new HashMap(), false, 0).trim();
- }
- if (desc.getFormat() != null)
- {
- stringData = desc.getFormat().decode(stringData);
- }
- int pos = desc.isSafePackage() ? data.position() + 13 : data.position();
- if (data.limit() > pos)
- {
- L2ClientDat.addLogConsole("Unpacked not full " + data.position() + "/" + data.limit() + " diff: " + (data.limit() - pos), true);
- }
- return stringData;
- }
-
- private String parseData(File currentFile, DatCrypter crypter, ByteBuffer data, ParamNode lastNode, List nodes, int cycleSize, Map vars, boolean isNameHidden, int cycleNameLevel) throws Exception
- {
- if (cycleSize > 0)
- {
- StringBuilder out = new StringBuilder();
- for (int i = 0; i < cycleSize; ++i)
- {
- boolean isAddCycleName = !isNameHidden && (lastNode != null) && lastNode.getEntityType().isCycle();
- if (isAddCycleName)
- {
- for (int k = 0; k < cycleNameLevel; ++k)
- {
- out.append("\t");
- }
- out.append(lastNode.getName().concat("_begin"));
- ++cycleNameLevel;
- }
- int nodeSize = nodes.size();
- int nNode = 0;
- for (ParamNode n : nodes)
- {
- if (n.isIterator())
- {
- continue;
- }
- ++nNode;
- }
- if (isNameHidden && (nNode > 1))
- {
- out.append("{");
- }
- for (int j = 0; j < nodeSize; ++j)
- {
- ParamNode node = nodes.get(j);
- if (node.getEntityType().isIf())
- {
- Variant var = vars.get(node.getParamIf());
- if ((var == null) || !var.toString().equalsIgnoreCase(node.getValIf()))
- {
- continue;
- }
- out.append(this.parseData(currentFile, crypter, data, null, node.getSubNodes(), 1, vars, isNameHidden, cycleNameLevel));
- continue;
- }
- if (!(node.isIterator() || node.getEntityType().isConstant() || isNameHidden || (!node.getEntityType().isWrapper() && !node.isNameHidden())))
- {
- out.append("\t").append(node.getName()).append("=");
- }
- if (node.getEntityType().isWrapper())
- {
- out.append(this.parseData(currentFile, crypter, data, null, node.getSubNodes(), 1, vars, true, cycleNameLevel));
- }
- else if (node.getEntityType().isCycle())
- {
- int size;
- if (node.getSize() >= 0)
- {
- size = node.getSize();
- }
- else
- {
- Variant var = vars.get(node.getCycleName());
- if (var.isInt())
- {
- size = var.getInt();
- }
- else if (var.isShort())
- {
- size = var.getShort();
- }
- else
- {
- throw new Exception("Wrong cycle variable format for cycle: " + node.getName() + " iterator: " + node.getCycleName());
- }
- }
- if (node.isNameHidden())
- {
- out.append("{");
- }
- out.append(this.parseData(currentFile, crypter, data, node, node.getSubNodes(), size, vars, node.isNameHidden(), cycleNameLevel));
- if (node.isNameHidden())
- {
- out.append("}");
- }
- }
- else if (node.getEntityType().isConstant())
- {
- out.append(node.getName().replace("\\t", "\t").replace("\\r\\n", "\r\n"));
- }
- else if (node.getEntityType().isVariable())
- {
- readVariables(currentFile, crypter, node, vars, data, out, false);
- }
- if (!node.isIterator() && !node.getEntityType().isConstant() && isNameHidden && (j != (nodeSize - 1)))
- {
- out.append(";");
- }
- if (!vars.containsKey(node.getName()))
- {
- continue;
- }
- DebugUtil.debugPos(data.position(), node.getName(), vars.get(node.getName()));
- }
- if (isNameHidden)
- {
- if (nNode > 1)
- {
- out.append("}");
- }
- if (i < (cycleSize - 1))
- {
- out.append(";");
- }
- }
- if (!isAddCycleName)
- {
- continue;
- }
- if (out.charAt(out.length() - 1) != '\n')
- {
- out.append("\t");
- }
- out.append(lastNode.getName()).append("_end\r\n");
- --cycleNameLevel;
- }
- return out.toString();
- }
- return "";
- }
-
- private void readVariables(File currentFile, DatCrypter crypter, ParamNode node, Map vars, ByteBuffer data, StringBuilder out, boolean isRaw) throws Exception
- {
- switch (node.getType())
- {
- case UCHAR:
- {
- short value = (byte) ByteReader.readChar(data);
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(value, Short.class));
- break;
- }
- case UBYTE:
- {
- int value = ByteReader.readUByte(data);
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(value, Integer.class));
- break;
- }
- case SHORT:
- {
- short value = ByteReader.readShort(data);
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(value, Short.class));
- break;
- }
- case USHORT:
- {
- int value = ByteReader.readShort(data) & 65535;
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(value, Integer.class));
- break;
- }
- case UINT:
- {
- int value = ByteReader.readUInt(data);
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(value, Integer.class));
- break;
- }
- case INT:
- {
- int value = ByteReader.readInt(data);
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(value, Integer.class));
- break;
- }
- case CNTR:
- {
- int value = ByteReader.readCompactInt(data);
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(value, Integer.class));
- break;
- }
- case UNICODE:
- {
- String str = ByteReader.readUtfString(data, isRaw);
- if (isRaw)
- {
- out.append(str);
- break;
- }
- if (!node.isIterator())
- {
- out.append("[").append(str).append("]");
- }
- vars.put(node.getName(), new Variant(str, String.class));
- break;
- }
- case ASCF:
- {
- String str = ByteReader.readString(data, isRaw);
- if (isRaw)
- {
- out.append(str);
- break;
- }
- if (!node.isIterator())
- {
- out.append("[").append(str).append("]");
- }
- vars.put(node.getName(), new Variant(str, String.class));
- break;
- }
- case DOUBLE:
- {
- double value = ByteReader.readDouble(data);
- if (!node.isIterator())
- {
- out.append(new BigDecimal(Double.toString(value)).toPlainString());
- }
- vars.put(node.getName(), new Variant(value, Double.class));
- break;
- }
- case FLOAT:
- {
- float value = ByteReader.readFloat(data);
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(Float.valueOf(value), Float.class));
- break;
- }
- case LONG:
- {
- long value = ByteReader.readLong(data);
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(value, Long.class));
- break;
- }
- case RGBA:
- {
- String value = ByteReader.readRGBA(data);
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(value, String.class));
- break;
- }
- case RGB:
- {
- String value = ByteReader.readRGB(data);
- if (!node.isIterator())
- {
- out.append(value);
- }
- vars.put(node.getName(), new Variant(value, String.class));
- break;
- }
- case HEX:
- {
- int value = ByteReader.readUByte(data);
- if (!node.isIterator())
- {
- String hex = Integer.toHexString(value).toUpperCase();
- if (hex.length() == 1)
- {
- hex = "0" + hex;
- }
- out.append(hex);
- }
- vars.put(node.getName(), new Variant(value, Integer.class));
- break;
- }
- case MAP_INT:
- {
- int index = ByteReader.readUInt(data);
- if (ConfigDebug.DAT_REPLACEMENT_NAMES)
- {
- String paramName = GameDataName.getInstance().getString(currentFile, crypter, index);
- if (!node.isIterator())
- {
- out.append(paramName);
- }
- vars.put(node.getName(), new Variant(paramName, String.class));
- break;
- }
- if (!node.isIterator())
- {
- out.append(index);
- }
- vars.put(node.getName(), new Variant(index, Integer.class));
- break;
- }
- }
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/DescriptorWriter.java b/L2ClientDat/java/com/l2jmobius/xml/DescriptorWriter.java
deleted file mode 100644
index 18747193cb..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/DescriptorWriter.java
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.nio.Buffer;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
-
-import com.l2jmobius.clientcryptor.crypt.DatCrypter;
-import com.l2jmobius.config.ConfigDebug;
-import com.l2jmobius.data.GameDataName;
-import com.l2jmobius.util.ByteWriter;
-import com.l2jmobius.util.DebugUtil;
-import com.l2jmobius.util.Util;
-import com.l2jmobius.xml.exceptions.CycleArgumentException;
-import com.l2jmobius.xml.exceptions.PackDataException;
-
-public class DescriptorWriter
-{
- private static final byte[] endFileBytes = new byte[]
- {
- 12,
- 83,
- 97,
- 102,
- 101,
- 80,
- 97,
- 99,
- 107,
- 97,
- 103,
- 101,
- 0
- };
- private static final DescriptorWriter _instance = new DescriptorWriter();
- private static final Logger _log = LogManager.getLogger(DescriptorWriter.class);
-
- public static DescriptorWriter getInstance()
- {
- return _instance;
- }
-
- public static byte[] parseData(File currentFile, DatCrypter crypter, Descriptor desc, String data) throws Exception
- {
- ByteArrayOutputStream stream = new ByteArrayOutputStream(data.length() / 2);
- if (desc.getFormat() != null)
- {
- data = desc.getFormat().encode(data);
- }
- if (desc.isRawData())
- {
- Buffer result = parseNodeValue(currentFile, crypter, data, desc.getNodes().get(0), true);
- if (result != null)
- {
- stream.write((byte[]) result.array());
- }
- else
- {
- _log.error("Failed to parse raw data.");
- }
- }
- else
- {
- ByteBuffer buffer = ByteBuffer.allocateDirect(data.length() * 2);
- String lines = data.replace("\r\n", "\t");
- HashMap counters = new HashMap<>();
- packData(currentFile, crypter, buffer, lines, counters, new HashMap(), new HashMap(), desc.getNodes());
- try
- {
- buffer.flip();
- stream.write(ByteBuffer.allocate(buffer.limit()).put(buffer).array());
- }
- catch (IOException e)
- {
- DebugUtil.getLogger().error(e.getMessage(), e);
- }
- }
- if (desc.isSafePackage())
- {
- stream.write(endFileBytes);
- }
- return stream.toByteArray();
- }
-
- private static void packData(File currentFile, DatCrypter crypter, ByteBuffer buffer, String lines, Map counters, Map paramMap, Map mapData, List nodes) throws Exception
- {
- for (ParamNode node : nodes)
- {
- try
- {
- String param;
- if (node.isIterator())
- {
- counters.put(node, buffer.position());
- continue;
- }
- if (node.getEntityType().isCycle())
- {
- if (!node.isNameHidden())
- {
- Pattern pattern = Pattern.compile("\\b" + node.getName().concat("_begin\\b(.*?)\\b").concat(node.getName()).concat("_end\\b"), 32);
- Matcher m = pattern.matcher(lines);
- ArrayList list = new ArrayList<>();
- while (m.find())
- {
- list.add(m.group(1));
- }
- writeSize(currentFile, crypter, buffer, counters, node, list.size());
- for (String str : list)
- {
- paramMap.putAll(Util.stringToMap(str));
- packData(currentFile, crypter, buffer, str, counters, paramMap, mapData, node.getSubNodes());
- }
- continue;
- }
- param = getDataString(node, node.getName(), paramMap, mapData);
- if (param == null)
- {
- throw new Exception("Error getDataString == null node: " + node.getName());
- }
- if (param.isEmpty() || param.equals("{}"))
- {
- writeSize(currentFile, crypter, buffer, counters, node, 0);
- continue;
- }
- List subParams = Util.splitList(param);
- int cycleSize = subParams.size();
- if ((node.getSize() > 0) && (node.getSize() != cycleSize))
- {
- throw new Exception("Wrong static cycle count for cycle: " + node.getName() + " size: " + subParams.size() + " params: " + Arrays.toString(subParams.toArray()));
- }
- writeSize(currentFile, crypter, buffer, counters, node, cycleSize);
- int nPramNode = 0;
- int nCycleNode = 0;
- for (ParamNode n : node.getSubNodes())
- {
- if (n.getEntityType().isCycle())
- {
- ++nCycleNode;
- continue;
- }
- if (n.isIterator())
- {
- continue;
- }
- ++nPramNode;
- }
- for (String subParam : subParams)
- {
- int paramIndex = 0;
- List sub2Params = (nPramNode > 0) || (nCycleNode > 1) ? Util.splitList(subParam) : Collections.singletonList(subParam);
- for (ParamNode n : node.getSubNodes())
- {
- if (n.isIterator() || n.getEntityType().isConstant())
- {
- continue;
- }
- if (paramIndex >= sub2Params.size())
- {
- throw new Exception("Wrong cycle param count for cycle: " + node.getName() + " paramIndex: " + paramIndex + " params: " + Arrays.toString(sub2Params.toArray()));
- }
- mapData.put(n, sub2Params.get(paramIndex++));
- }
- packData(currentFile, crypter, buffer, lines, counters, paramMap, mapData, node.getSubNodes());
- }
- continue;
- }
- if (node.getEntityType().isWrapper())
- {
- List subParams = Util.splitList(getDataString(node, node.getName(), paramMap, mapData));
- int paramIndex = 0;
- for (ParamNode n : node.getSubNodes())
- {
- if (n.isIterator() || n.getEntityType().isConstant())
- {
- continue;
- }
- mapData.put(n, subParams.get(paramIndex++));
- }
- packData(currentFile, crypter, buffer, lines, counters, paramMap, mapData, node.getSubNodes());
- continue;
- }
- if (node.getEntityType().isVariable())
- {
- buffer.put((byte[]) parseNodeValue(currentFile, crypter, getDataString(node, node.getName(), paramMap, mapData), node, false).array());
- continue;
- }
- if (!node.getEntityType().isIf() || ((param = getDataString(node, node.getParamIf(), paramMap, mapData)) == null) || !node.getValIf().equalsIgnoreCase(param))
- {
- continue;
- }
- packData(currentFile, crypter, buffer, lines, counters, paramMap, mapData, node.getSubNodes());
- }
- catch (Exception e)
- {
- throw new PackDataException(e + "\r\n-node: " + node + "\r\n\tparam: " + paramMap.get(node.getName()));
- }
- }
- }
-
- private static Buffer parseNodeValue(File currentFile, DatCrypter crypter, String data, ParamNode node, boolean isRaw)
- {
- ParamType nodeType = node.getType();
- if (nodeType == null)
- {
- _log.error("Incorrect node type for node " + node);
- return null;
- }
- try
- {
- switch (nodeType)
- {
- case UCHAR:
- {
- return ByteWriter.writeChar(Byte.parseByte(data));
- }
- case CNTR:
- {
- return ByteWriter.writeCompactInt(Integer.parseInt(data));
- }
- case UBYTE:
- {
- return ByteWriter.writeUByte(Short.parseShort(data));
- }
- case SHORT:
- {
- return ByteWriter.writeShort(Short.parseShort(data));
- }
- case USHORT:
- {
- return ByteWriter.writeUShort(Integer.parseInt(data));
- }
- case UINT:
- case INT:
- {
- return ByteWriter.writeInt(Integer.parseInt(data));
- }
- case UNICODE:
- {
- return ByteWriter.writeUtfString(isRaw ? data : data.substring(1, data.length() - 1), isRaw);
- }
- case ASCF:
- {
- return ByteWriter.writeString(isRaw ? data : data.substring(1, data.length() - 1), isRaw);
- }
- case DOUBLE:
- {
- return ByteWriter.writeDouble(Double.parseDouble(data));
- }
- case FLOAT:
- {
- return ByteWriter.writeFloat(Float.parseFloat(data));
- }
- case LONG:
- {
- return ByteWriter.writeLong(Long.parseLong(data));
- }
- case RGBA:
- {
- return ByteWriter.writeRGBA(data);
- }
- case RGB:
- {
- return ByteWriter.writeRGB(data);
- }
- case HEX:
- {
- return ByteWriter.writeByte((byte) (Integer.parseInt(data, 16) & 255));
- }
- case MAP_INT:
- {
- if (ConfigDebug.DAT_REPLACEMENT_NAMES)
- {
- return ByteWriter.writeInt(GameDataName.getInstance().getId(currentFile, crypter, node, data));
- }
- return ByteWriter.writeInt(Integer.parseInt(data));
- }
- }
- DebugUtil.getLogger().error("Unsupported primitive type " + (nodeType));
- }
- catch (Exception e)
- {
- _log.error("Failed to parse value for node " + node + " data: " + data, e);
- }
- return null;
- }
-
- private static String getDataString(ParamNode node, String name, Map paramMap, Map mapData)
- {
- if ((mapData != null) && mapData.containsKey(node))
- {
- return mapData.get(node);
- }
- return paramMap.get(name);
- }
-
- private static void writeSize(File currentFile, DatCrypter crypter, ByteBuffer buffer, Map counters, ParamNode node, int cycleSize) throws CycleArgumentException
- {
- if (!node.isSkipWriteSize() && (node.getSize() < 0))
- {
- ParamNode iterator = node.getTmpIterator();
- if (iterator == null)
- {
- counters.keySet().stream().filter(n -> n.getName().equals(node.getCycleName())).forEach(node::setTmpIterator);
- iterator = node.getTmpIterator();
- if (iterator == null)
- {
- throw new CycleArgumentException("Invalid argument [" + node.getName() + "] for cycle");
- }
- }
- Buffer buff = parseNodeValue(currentFile, crypter, String.valueOf(cycleSize), iterator, false);
- int pos = counters.get(iterator);
- if (pos >= 0)
- {
- int rem = buffer.position();
- if (pos == rem)
- {
- buffer.put((byte[]) buff.array());
- }
- else
- {
- byte[] arrayNext = new byte[rem - pos];
- buffer.position(pos);
- buffer.get(arrayNext);
- buffer.position(pos);
- buffer.put((byte[]) buff.array());
- buffer.put(arrayNext);
- }
- counters.remove(iterator);
- }
- }
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/ParamNode.java b/L2ClientDat/java/com/l2jmobius/xml/ParamNode.java
deleted file mode 100644
index 4f00dff192..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/ParamNode.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ParamNode
-{
- private String _name;
- private int _size = -1;
- private boolean _hidden = false;
- private String _cycleName;
- private final ParamNodeType _entityType;
- private final ParamType _type;
- private List _sub;
- private boolean _isIterator;
- private ParamNode _tmpIterator;
- private boolean _skipWriteSize;
- private String _paramIf;
- private String _valIf;
-
- ParamNode(String name, ParamNodeType entityType, ParamType type)
- {
- _name = name;
- _entityType = entityType;
- _type = type;
- }
-
- public void setName(String name)
- {
- _name = name;
- }
-
- public void setSize(int size)
- {
- _size = size;
- }
-
- public int getSize()
- {
- return _size;
- }
-
- void setIterator()
- {
- _isIterator = true;
- }
-
- void setHidden()
- {
- _hidden = true;
- }
-
- boolean isIterator()
- {
- return _isIterator && (_size < 0);
- }
-
- boolean isNameHidden()
- {
- return _hidden;
- }
-
- public String getName()
- {
- return _name;
- }
-
- ParamNodeType getEntityType()
- {
- return _entityType;
- }
-
- public ParamType getType()
- {
- return _type;
- }
-
- synchronized ParamNode copy()
- {
- ParamNode node = new ParamNode(getName(), getEntityType(), getType());
- if (isNameHidden())
- {
- node.setHidden();
- }
- if (isIterator())
- {
- node.setIterator();
- }
- node.setSkipWriteSize(isSkipWriteSize());
- node.setCycleName(getCycleName());
- if (getSubNodes() != null)
- {
- ArrayList list = new ArrayList<>();
- for (ParamNode n : getSubNodes())
- {
- ParamNode copyN = n.copy();
- list.add(copyN);
- }
- node.addSubNodes(list);
- }
- return node;
- }
-
- synchronized void addSubNodes(List n)
- {
- if (_sub == null)
- {
- _sub = new ArrayList<>();
- }
- _sub.addAll(n);
- }
-
- List getSubNodes()
- {
- return _sub;
- }
-
- @Override
- public String toString()
- {
- return _name + "[" + (_entityType) + "][" + _cycleName + "][" + (_type) + "]";
- }
-
- ParamNode getTmpIterator()
- {
- return _tmpIterator;
- }
-
- void setTmpIterator(ParamNode tmpIterator)
- {
- _tmpIterator = tmpIterator;
- }
-
- boolean isSkipWriteSize()
- {
- return _skipWriteSize;
- }
-
- void setSkipWriteSize(boolean skipWrite)
- {
- _skipWriteSize = skipWrite;
- }
-
- void setParamIf(String paramIf)
- {
- _paramIf = paramIf;
- }
-
- void setValIf(String valIf)
- {
- _valIf = valIf;
- }
-
- String getParamIf()
- {
- return _paramIf;
- }
-
- String getValIf()
- {
- return _valIf;
- }
-
- String getCycleName()
- {
- return _cycleName;
- }
-
- void setCycleName(String cycleName)
- {
- _cycleName = cycleName;
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/ParamNodeType.java b/L2ClientDat/java/com/l2jmobius/xml/ParamNodeType.java
deleted file mode 100644
index 59dc2e8aea..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/ParamNodeType.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml;
-
-enum ParamNodeType
-{
- FOR,
- WRAPPER,
- CONSTANT,
- VARIABLE,
- IF;
-
- private ParamNodeType()
- {
- }
-
- boolean isCycle()
- {
- return this == FOR;
- }
-
- public boolean isWrapper()
- {
- return this == WRAPPER;
- }
-
- boolean isConstant()
- {
- return this == CONSTANT;
- }
-
- boolean isVariable()
- {
- return this == VARIABLE;
- }
-
- boolean isIf()
- {
- return this == IF;
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/ParamType.java b/L2ClientDat/java/com/l2jmobius/xml/ParamType.java
deleted file mode 100644
index 281778880b..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/ParamType.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml;
-
-enum ParamType
-{
- UCHAR,
- CNTR,
- UBYTE,
- USHORT,
- SHORT,
- UINT,
- STRING,
- INT,
- UNICODE,
- ASCF,
- DOUBLE,
- FLOAT,
- LONG,
- RGBA,
- RGB,
- HEX,
- MAP_INT;
-
- private ParamType()
- {
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/Variant.java b/L2ClientDat/java/com/l2jmobius/xml/Variant.java
deleted file mode 100644
index 551b23d563..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/Variant.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml;
-
-public class Variant
-{
- private final Object _value;
- private final Class> _type;
-
- Variant(Object value, Class> type)
- {
- _value = type.cast(value);
- _type = type;
- }
-
- public final boolean isInt()
- {
- return _type == Integer.class;
- }
-
- public final boolean isShort()
- {
- return _type == Short.class;
- }
-
- public final boolean isFloat()
- {
- return _type == Float.class;
- }
-
- public final boolean isDouble()
- {
- return _type == Double.class;
- }
-
- public final int getInt()
- {
- return (Integer) _value;
- }
-
- public final short getShort()
- {
- return (Short) _value;
- }
-
- public final float getFloat()
- {
- return ((Float) _value).floatValue();
- }
-
- public double getDouble()
- {
- return (Double) _value;
- }
-
- public long getLong()
- {
- return (Long) _value;
- }
-
- @Override
- public final String toString()
- {
- return String.valueOf(_value);
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/exceptions/CycleArgumentException.java b/L2ClientDat/java/com/l2jmobius/xml/exceptions/CycleArgumentException.java
deleted file mode 100644
index 83c302ad72..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/exceptions/CycleArgumentException.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml.exceptions;
-
-public class CycleArgumentException extends Exception
-{
- public CycleArgumentException(String message)
- {
- super(message);
- }
-}
diff --git a/L2ClientDat/java/com/l2jmobius/xml/exceptions/PackDataException.java b/L2ClientDat/java/com/l2jmobius/xml/exceptions/PackDataException.java
deleted file mode 100644
index ea6ecf0537..0000000000
--- a/L2ClientDat/java/com/l2jmobius/xml/exceptions/PackDataException.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * This file is part of the L2J Mobius project.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package com.l2jmobius.xml.exceptions;
-
-public class PackDataException extends Exception
-{
- public PackDataException(String message)
- {
- super(message);
- }
-}