diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 0f4764e..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,4 +0,0 @@
-* text eol=lf
-*.bat text eol=crlf
-*.jar binary
-*.class binary
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index d5f737e..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,119 +0,0 @@
-# User-specific stuff
-.idea/
-
-*.iml
-*.ipr
-*.iws
-
-# IntelliJ
-out/
-# mpeltonen/sbt-idea plugin
-.idea_modules/
-
-# JIRA plugin
-atlassian-ide-plugin.xml
-
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-*~
-
-# temporary files which can be created if a process still has a handle open of a deleted file
-.fuse_hidden*
-
-# KDE directory preferences
-.directory
-
-# Linux trash folder which might appear on any partition or disk
-.Trash-*
-
-# .nfs files are created when an open file is removed but is still being accessed
-.nfs*
-
-# General
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must end with two \r
-Icon
-
-# Thumbnails
-._*
-
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-.com.apple.timemachine.donotpresent
-
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
-
-# Windows thumbnail cache files
-Thumbs.db
-Thumbs.db:encryptable
-ehthumbs.db
-ehthumbs_vista.db
-
-# Dump file
-*.stackdump
-
-# Folder config file
-[Dd]esktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Windows Installer files
-*.cab
-*.msi
-*.msix
-*.msm
-*.msp
-
-# Windows shortcuts
-*.lnk
-
-.gradle
-build/
-
-# Ignore Gradle GUI config
-gradle-app.setting
-
-# Cache of project
-.gradletasknamecache
-
-**/build/
-
-# Common working directory
-run/
-runs/
-
-# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
-!gradle-wrapper.jar
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..7d05e99
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,10 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# 依赖于环境的 Maven 主目录路径
+/mavenHomeManager.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..89f3864
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+enchantmentdoesnotconflict-1.21.7-1.0
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..a55e7a1
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..50fe226
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..cede910
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..eda3aa5
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..6467bd9
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/enchantment_does_not_conflict_1_0_1.xml b/.idea/libraries/enchantment_does_not_conflict_1_0_1.xml
new file mode 100644
index 0000000..36deb6a
--- /dev/null
+++ b/.idea/libraries/enchantment_does_not_conflict_1_0_1.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..f16dea7
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..6888375
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/enchantmentdoesnotconflict-1.21.7-1.0.main.iml b/.idea/modules/enchantmentdoesnotconflict-1.21.7-1.0.main.iml
new file mode 100644
index 0000000..0eeab82
--- /dev/null
+++ b/.idea/modules/enchantmentdoesnotconflict-1.21.7-1.0.main.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ MIXIN
+ MCP
+ FABRIC
+
+ 1
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules/enchantmentdoesnotconflict-1.21.7-1.0.test.iml b/.idea/modules/enchantmentdoesnotconflict-1.21.7-1.0.test.iml
new file mode 100644
index 0000000..0eeab82
--- /dev/null
+++ b/.idea/modules/enchantmentdoesnotconflict-1.21.7-1.0.test.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ MIXIN
+ MCP
+ FABRIC
+
+ 1
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/Minecraft_Client.xml b/.idea/runConfigurations/Minecraft_Client.xml
new file mode 100644
index 0000000..08b51ac
--- /dev/null
+++ b/.idea/runConfigurations/Minecraft_Client.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/Minecraft_Server.xml b/.idea/runConfigurations/Minecraft_Server.xml
new file mode 100644
index 0000000..063da9a
--- /dev/null
+++ b/.idea/runConfigurations/Minecraft_Server.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 7a4a3ea..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 9112094..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,68 +0,0 @@
-plugins {
- id 'fabric-loom' version '1.10.5'
- id 'maven-publish'
-}
-
-version = "${project.minecraft_version}-${project.mod_version}"
-group = project.maven_group
-
-base {
- archivesName = project.archives_base_name
-}
-
-dependencies {
- minecraft "com.mojang:minecraft:${project.minecraft_version}"
- mappings "net.fabricmc:yarn:${project.minecraft_version}+${project.yarn_mappings}:v2"
- modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
- modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}+${project.minecraft_version}"
-}
-
-processResources {
- inputs.property "version", project.version
- inputs.property "minecraft_version", project.minecraft_version
- inputs.property "loader_version", project.loader_version
- filteringCharset "UTF-8"
-
- filesMatching("fabric.mod.json") {
- expand "version": project.version,
- "minecraft_version": project.minecraft_version,
- "loader_version": project.loader_version
- }
-}
-
-def targetJavaVersion = 21
-tasks.withType(JavaCompile).configureEach {
- it.options.encoding = "UTF-8"
- if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
- it.options.release.set(targetJavaVersion)
- }
-}
-
-java {
- def javaVersion = JavaVersion.toVersion(targetJavaVersion)
- if (JavaVersion.current() < javaVersion) {
- toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
- }
- withSourcesJar()
-}
-
-jar {
- from("LICENSE") {
- rename { "${project.archivesBaseName}_${it}" }
- }
-}
-
-publishing {
- publications {
- create("mavenJava", MavenPublication) {
- artifactId = project.archives_base_name
- from components.java
- }
- }
- repositories {
- maven {
- name= "Disk"
- url = uri("D:/git/maven-repository-raw")
- }
- }
-}
diff --git a/gradle.properties b/gradle.properties
deleted file mode 100644
index 7504133..0000000
--- a/gradle.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-minecraft_version=1.21.7
-yarn_mappings=build.7
-loader_version=0.16.13
-mod_version=1.0
-maven_group=com.mingliqiye.minecraft.enchantment.conflict
-archives_base_name=enchantmentdoesnotconflict
-fabric_version=0.128.0
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index acc644d..0000000
--- a/settings.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-pluginManagement {
- repositories {
- maven {
- name = 'Fabric'
- url = 'https://maven.fabricmc.net/'
- }
- gradlePluginPortal()
- }
-}
-
-rootProject.name= "${archives_base_name}-${minecraft_version}-${mod_version}"
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/Mod.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/Mod.java
deleted file mode 100644
index 7592211..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/Mod.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict;
-
-import com.mingliqiye.minecraft.enchantment.conflict.network.ConfigPayload;
-import net.fabricmc.api.ModInitializer;
-
-public class Mod implements ModInitializer {
-
- public static String MOD_ID = "enchantmentdoesnotconflict";
- @Override
- public void onInitialize() {
- ConfigPayload.initializeServer();
- }
-}
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/client/ModClient.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/client/ModClient.java
deleted file mode 100644
index 3fd264b..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/client/ModClient.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict.client;
-
-import com.mingliqiye.minecraft.enchantment.conflict.network.ConfigPayload;
-import net.fabricmc.api.ClientModInitializer;
-
-public class ModClient implements ClientModInitializer {
- @Override
- public void onInitializeClient() {
- ConfigPayload.initializeClient();
- }
-}
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/config/ModConfig.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/config/ModConfig.java
deleted file mode 100644
index 4019b0e..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/config/ModConfig.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict.config;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.mojang.logging.LogUtils;
-import net.fabricmc.loader.api.FabricLoader;
-import org.slf4j.Logger;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-
-import static com.mingliqiye.minecraft.enchantment.conflict.Mod.MOD_ID;
-
-public class ModConfig {
- private static final Path CONFIG_PATH =
- FabricLoader.getInstance().getConfigDir().resolve(MOD_ID + ".json");
- private static final Gson GSON =
- new GsonBuilder().setPrettyPrinting().serializeNulls().create();
-
- private static ModConfig instance;
-
- private boolean allowDamageEnchantment = true;
- private boolean allowInfinityEnchantment = true;
- private boolean allowPiercingEnchantment = true;
- private boolean allowProtectionEnchantment = true;
- private static final Logger LOGGER = LogUtils.getLogger();
-
- public ModConfig() {
- }
-
- public static ModConfig getInstance() {
- return ModConfig.instance;
- }
-
- public static void setInstance(ModConfig instance) {
- ModConfig.instance = instance;
- }
-
- public static ModConfig load() {
- try {
- if (Files.exists(CONFIG_PATH)) {
- return GSON.fromJson(Files.newBufferedReader(CONFIG_PATH),
- ModConfig.class);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- ModConfig modConfig = new ModConfig();
- setInstance(modConfig);
- save();
- return modConfig;
- }
-
- public static void save() {
- try {
- Files.writeString(CONFIG_PATH, GSON.toJson(instance));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- static {
- setInstance(load());
- }
-
- public boolean isAllowDamageEnchantment() {
- return allowDamageEnchantment;
- }
-
- public void setAllowDamageEnchantment(boolean allowDamageEnchantment) {
- this.allowDamageEnchantment = allowDamageEnchantment;
- }
-
- public boolean isAllowInfinityEnchantment() {
- return allowInfinityEnchantment;
- }
-
- public void setAllowInfinityEnchantment(boolean allowInfinityEnchantment) {
- this.allowInfinityEnchantment = allowInfinityEnchantment;
- }
-
- public boolean isAllowPiercingEnchantment() {
- return allowPiercingEnchantment;
- }
-
- public void setAllowPiercingEnchantment(boolean allowPiercingEnchantment) {
- this.allowPiercingEnchantment = allowPiercingEnchantment;
- }
-
-
- public String toString() {
- return this.getClass().getName() + "(" + "allowDamageEnchantment" +
- "=" + allowDamageEnchantment + "," +
- "allowInfinityEnchantment" + "=" + allowInfinityEnchantment +
- "," + "allowPiercingEnchantment" + "=" +
- allowPiercingEnchantment + "," +
- "allowProtectionEnchantment" + "=" +
- allowProtectionEnchantment + ")";
- }
-
- public boolean isAllowProtectionEnchantment() {
- return allowProtectionEnchantment;
- }
-
- public void setAllowProtectionEnchantment(boolean allowProtectionEnchantment) {
- this.allowProtectionEnchantment = allowProtectionEnchantment;
- }
-}
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/DamageEnchantment.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/DamageEnchantment.java
deleted file mode 100644
index 148888a..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/DamageEnchantment.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict.enchantment;
-
-import com.mingliqiye.minecraft.enchantment.conflict.config.ModConfig;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class DamageEnchantment extends Enchantment {
-
- private final String id;
-
- public DamageEnchantment(String id) {
- this.id = id;
- }
-
- private final static List enchantmentIds =
- Arrays.asList("minecraft:sharpness", "minecraft:smite", "minecraft:bane_of_arthropods", "minecraft:density",
- "minecraft:breach");
-
- public static DamageEnchantment ofId(String id) {
- if (enchantmentIds.contains(id)) {
- return new DamageEnchantment(id);
- }
- return null;
- }
-
- public Boolean canBeCombined(Enchantment enchantment) {
- if (enchantment instanceof DamageEnchantment) {
- return ModConfig.getInstance().isAllowDamageEnchantment();
- }
- return super.canBeCombined(enchantment);
- }
-
- public String getId() {
- return id;
- }
-}
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/Enchantment.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/Enchantment.java
deleted file mode 100644
index 9669225..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/Enchantment.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict.enchantment;
-
-public abstract class Enchantment {
- public Boolean canBeCombined(Enchantment enchantment) {
- return null;
- }
-
- abstract String getId();
-
- public static Enchantment ofId(String id) {
- DamageEnchantment damageEnchantment = DamageEnchantment.ofId(id);
- if (damageEnchantment != null) {
- return damageEnchantment;
- }
- InfinityEnchantment infinityEnchantment = InfinityEnchantment.ofId(id);
- if (infinityEnchantment != null) {
- return infinityEnchantment;
- }
- PiercingEnchantment piercingEnchantment = PiercingEnchantment.ofId(id);
- if (piercingEnchantment != null) {
- return piercingEnchantment;
- }
- return ProtectionEnchantment.ofId(id);
- }
-}
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/InfinityEnchantment.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/InfinityEnchantment.java
deleted file mode 100644
index 4e22897..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/InfinityEnchantment.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict.enchantment;
-
-import com.mingliqiye.minecraft.enchantment.conflict.config.ModConfig;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class InfinityEnchantment extends Enchantment {
- private final String id;
-
- private InfinityEnchantment(String id) {
- this.id = id;
- }
-
- private static final List enchantmentIds =
- Arrays.asList("minecraft:infinity","minecraft:mending");
-
- public static InfinityEnchantment ofId(String id) {
- if (enchantmentIds.contains(id)) {
- return new InfinityEnchantment(id);
- }
- return null;
- }
-
- @Override
- public Boolean canBeCombined(Enchantment enchantment) {
- if (enchantment instanceof InfinityEnchantment) {
- return ModConfig.getInstance().isAllowInfinityEnchantment();
- }
- return super.canBeCombined(enchantment);
- }
-
- @Override
- public String getId() {
- return id;
- }
-}
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/PiercingEnchantment.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/PiercingEnchantment.java
deleted file mode 100644
index 96c93f1..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/PiercingEnchantment.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict.enchantment;
-
-import com.mingliqiye.minecraft.enchantment.conflict.config.ModConfig;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class PiercingEnchantment extends Enchantment {
- private final String id;
-
- private PiercingEnchantment(String id) {
- this.id = id;
- }
-
- private static final List enchantmentIds =
- Arrays.asList("minecraft:piercing","minecraft:multishot");
-
- public static PiercingEnchantment ofId(String id) {
- if (enchantmentIds.contains(id)) {
- return new PiercingEnchantment(id);
- }
- return null;
- }
-
- @Override
- public Boolean canBeCombined(Enchantment enchantment) {
- if (enchantment instanceof PiercingEnchantment) {
- return ModConfig.getInstance().isAllowPiercingEnchantment();
- }
- return super.canBeCombined(enchantment);
- }
-
- @Override
- public String getId() {
- return id;
- }
-}
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/ProtectionEnchantment.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/ProtectionEnchantment.java
deleted file mode 100644
index 646cecd..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/enchantment/ProtectionEnchantment.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict.enchantment;
-
-import com.mingliqiye.minecraft.enchantment.conflict.config.ModConfig;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class ProtectionEnchantment extends Enchantment {
- private final String id;
-
- private ProtectionEnchantment(String id) {
- this.id = id;
- }
-
- private static final List enchantmentIds =
- Arrays.asList(
- "minecraft:protection",
- "minecraft:fire_protection",
- "minecraft:blast_protection",
- "minecraft:projectile_protection"
- );
-
- public static ProtectionEnchantment ofId(String id) {
- if (enchantmentIds.contains(id)) {
- return new ProtectionEnchantment(id);
- }
- return null;
- }
-
- @Override
- public Boolean canBeCombined(Enchantment enchantment) {
- if (enchantment instanceof ProtectionEnchantment) {
- return ModConfig.getInstance().isAllowProtectionEnchantment();
- }
- return super.canBeCombined(enchantment);
- }
-
- @Override
- public String getId() {
- return id;
- }
-}
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/mixin/EnchantmentMixin.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/mixin/EnchantmentMixin.java
deleted file mode 100644
index 9d69cb7..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/mixin/EnchantmentMixin.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict.mixin;
-
-import com.mojang.logging.LogUtils;
-import net.minecraft.enchantment.Enchantment;
-import net.minecraft.registry.entry.RegistryEntry;
-import org.slf4j.Logger;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.Unique;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
-
-@Mixin(Enchantment.class)
-public abstract class EnchantmentMixin {
- @Unique
- private static final Logger LOGGER = LogUtils.getLogger();
-
-
- @Inject(method = "canBeCombined", at = @At("HEAD"), cancellable = true)
- private static void canBeCombined(
- RegistryEntry first, RegistryEntry second,
- CallbackInfoReturnable cir
- ) {
- com.mingliqiye.minecraft.enchantment.conflict.enchantment.Enchantment firste =
- com.mingliqiye.minecraft.enchantment.conflict.enchantment.Enchantment.ofId(first.getIdAsString());
- com.mingliqiye.minecraft.enchantment.conflict.enchantment.Enchantment seconde =
- com.mingliqiye.minecraft.enchantment.conflict.enchantment.Enchantment.ofId(second.getIdAsString());
- if (firste == null || seconde == null) {
- return;
- }
- cir.setReturnValue(firste.canBeCombined(seconde));
- }
-}
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/mixin/PlayerManagerMixin.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/mixin/PlayerManagerMixin.java
deleted file mode 100644
index ba28421..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/mixin/PlayerManagerMixin.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict.mixin;
-
-import com.mingliqiye.minecraft.enchantment.conflict.config.ModConfig;
-import com.mingliqiye.minecraft.enchantment.conflict.network.ConfigPayload;
-import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
-import net.minecraft.network.ClientConnection;
-import net.minecraft.server.PlayerManager;
-import net.minecraft.server.network.ConnectedClientData;
-import net.minecraft.server.network.ServerPlayerEntity;
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-import org.spongepowered.asm.mixin.injection.Inject;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-
-@Mixin(PlayerManager.class)
-public abstract class PlayerManagerMixin {
-
- @Inject(method = "onPlayerConnect", at = @At("RETURN"))
- private void onPlayerConnect(
- ClientConnection connection, ServerPlayerEntity player, ConnectedClientData clientData,
- CallbackInfo ci
- ) {
- ConfigPayload.sendToPlayer(player);
- }
-}
diff --git a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/network/ConfigPayload.java b/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/network/ConfigPayload.java
deleted file mode 100644
index 857da7b..0000000
--- a/src/main/java/com/mingliqiye/minecraft/enchantment/conflict/network/ConfigPayload.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.mingliqiye.minecraft.enchantment.conflict.network;
-
-import com.google.gson.Gson;
-import com.mingliqiye.minecraft.enchantment.conflict.Mod;
-import com.mingliqiye.minecraft.enchantment.conflict.config.ModConfig;
-import com.mojang.logging.LogUtils;
-import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
-import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
-import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
-import net.minecraft.network.PacketByteBuf;
-import net.minecraft.network.codec.PacketCodec;
-import net.minecraft.network.packet.CustomPayload;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.util.Identifier;
-import org.slf4j.Logger;
-
-import static com.mingliqiye.minecraft.enchantment.conflict.Mod.MOD_ID;
-
-public record ConfigPayload(ModConfig data) implements CustomPayload {
-
- private static final Logger LOGGER = LogUtils.getLogger();
- public static final CustomPayload.Id TYPE =
- new CustomPayload.Id<>(Identifier.of(Mod.MOD_ID, "config_packet"));
-
- private static final Gson GSON = new Gson();
-
-
- public static final PacketCodec CODEC =
- PacketCodec.of((payload, buf) -> buf.writeString(GSON.toJson(payload.data())),
- buf -> new ConfigPayload(GSON.fromJson(buf.readString(), ModConfig.class)));
-
- @Override
- public Id extends CustomPayload> getId() {
- return TYPE;
- }
-
- public static void initializeClient() {
- ClientPlayNetworking.registerGlobalReceiver(TYPE, (payload, ctx) -> {
- ctx.client().execute(() -> {
- ModConfig.setInstance(payload.data());
- LOGGER.info("Load Server {} config {}", MOD_ID, payload.data());
- });
- });
- }
-
- public static void initializeServer() {
- PayloadTypeRegistry.playS2C().register(TYPE, CODEC);
- }
-
- public static void sendToPlayer(ServerPlayerEntity player) {
- if (ServerPlayNetworking.canSend(player, TYPE)) {
- ServerPlayNetworking.send(player, new ConfigPayload(ModConfig.getInstance()));
- LOGGER.info("Send {} config to player({}) ok", Mod.MOD_ID, player.getName().getString());
- } else {
- LOGGER.error("Cannot send config to {}: channel not registered", player.getName());
- }
- }
-}
diff --git a/src/main/resources/enchantmentdoesnotconflict.mixins.json b/src/main/resources/enchantmentdoesnotconflict.mixins.json
deleted file mode 100644
index 3b3b24a..0000000
--- a/src/main/resources/enchantmentdoesnotconflict.mixins.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "required": true,
- "minVersion": "0.8",
- "package": "com.mingliqiye.minecraft.enchantment.conflict.mixin",
- "compatibilityLevel": "JAVA_17",
- "mixins": [
- "EnchantmentMixin",
- "PlayerManagerMixin"
- ],
- "injectors": {
- "defaultRequire": 1
- },
- "overwrites": {
- "requireAnnotations": true
- }
-}
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
deleted file mode 100644
index d23ced1..0000000
--- a/src/main/resources/fabric.mod.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "schemaVersion": 1,
- "id": "enchantmentdoesnotconflict",
- "version": "${version}",
- "name": "enchantmentDoesNotConflict",
- "description": "移除一些附魔冲突",
- "authors": [],
- "contact": {},
- "license": "Apache-2.0",
- "icon": "assets/enchantmentdoesnotconflict/icon.png",
- "environment": "*",
- "entrypoints": {
- "client": [
- "com.mingliqiye.minecraft.enchantment.conflict.client.ModClient"
- ],
- "main": [
- "com.mingliqiye.minecraft.enchantment.conflict.Mod"
- ]
- },
- "mixins": [
- "enchantmentdoesnotconflict.mixins.json"
- ],
- "depends": {
- "fabricloader": ">=${loader_version}",
- "fabric": "*",
- "minecraft": "${minecraft_version}"
- }
-}