diff --git a/.github/workflows/gradle.yml b/.github/workflows/build.yml similarity index 83% rename from .github/workflows/gradle.yml rename to .github/workflows/build.yml index 8e9806d2..b9927da6 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/build.yml @@ -20,22 +20,20 @@ jobs: steps: - name: checkout repository uses: actions/checkout@v2 - - name: validate gradle wrapper - uses: gradle/wrapper-validation-action@v1 - name: setup jdk ${{ matrix.java }} uses: actions/setup-java@v1 with: java-version: ${{ matrix.java }} - name: make gradle wrapper executable if: ${{ runner.os != 'Windows' }} - run: chmod +x ./gradlew + run: chmod +x ./gradlecw - name: build - run: ./gradlew build + run: ./gradlecw build - name: capture build artifacts if: ${{ runner.os == 'Linux' && matrix.java == '17' }} # Only upload artifacts built from LTS java on one OS uses: actions/upload-artifact@v2 with: name: Artifacts path: | - FPFabric/build/libs/ - FPForge/build/libs/ \ No newline at end of file + FPFabric/build/libs/* + FPForge/build/libs/* diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml new file mode 100644 index 00000000..38244d47 --- /dev/null +++ b/.github/workflows/tag.yml @@ -0,0 +1,34 @@ +name: Create Release + +on: create + +jobs: + build: + strategy: + matrix: + # Use these Java versions + java: [ + 17 + ] + # and run on both Linux and Windows + os: [ubuntu-20.04] + runs-on: ${{ matrix.os }} + steps: + - name: checkout repository + uses: actions/checkout@v2 + - name: setup jdk ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + - name: make gradle wrapper executable + if: ${{ runner.os != 'Windows' }} + run: chmod +x ./gradlecw + - name: build + run: ./gradlecw build + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + FPFabric/build/libs/* + FPForge/build/libs/* diff --git a/.gitignore b/.gitignore index b4506792..19eb8048 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,10 @@ build/ out/ classes/ +# eclipse + +*.launch + # idea .idea/ @@ -20,8 +24,17 @@ bin/ .classpath .project +# macos + +*.DS_Store + # fabric run/ -**/logs/latest.log -logs/debug.log + +# compose + +*.gradle +*.properties +gradle/wrapper +VersionShared \ No newline at end of file diff --git a/FPFabric/build.gradle b/FPFabric/build.gradle deleted file mode 100644 index c42c9bef..00000000 --- a/FPFabric/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -project.evaluationDependsOn(':FPShared') - -archivesBaseName = rootProject.archives_base_name + "-fabric" - -dependencies { - modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" - modImplementation "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" - - modImplementation "curse.maven:modmenu-308702:${rootProject.mod_menu_release}" - - sourceSets.main.java.srcDirs += (project(':FPShared').sourceSets.main.java.srcDirs) - sourceSets.main.resources.srcDirs += (project(':FPShared').sourceSets.main.resources.srcDirs) -} - -processResources { - duplicatesStrategy(DuplicatesStrategy.EXCLUDE) - inputs.property "version", project.version - - filesMatching("fabric.mod.json") { - expand "version": project.version - } - -} diff --git a/FPForge/build.gradle b/FPForge/build.gradle deleted file mode 100644 index 785a32f4..00000000 --- a/FPForge/build.gradle +++ /dev/null @@ -1,37 +0,0 @@ -project.evaluationDependsOn(':FPShared') - -archivesBaseName = rootProject.archives_base_name + "-forge" - -dependencies { - forge "net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}" - - sourceSets.main.java.srcDirs += (project(':FPShared').sourceSets.main.java.srcDirs) - sourceSets.main.resources.srcDirs += (project(':FPShared').sourceSets.main.resources.srcDirs) -} - -processResources { - inputs.property "version", project.version - - filesMatching("META-INF/mods.toml") { - expand "version": project.version - } -} - -loom { - forge.mixinConfigs "${modid}.mixins.json" -} - -jar { - manifest { - attributes([ - "Specification-Title": "${rootProject.modid}", - "Specification-Vendor": "${rootProject.author}", - "Specification-Version": "1", // We are version 1 of ourselves - "Implementation-Title": project.name, - "Implementation-Version": "${version}", - "Implementation-Vendor" :"${rootProject.author}", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), - "MixinConfigs": "${rootProject.modid}.mixins.json" - ]) - } -} \ No newline at end of file diff --git a/FPForge/gradle.properties b/FPForge/gradle.properties deleted file mode 100644 index 32f842a6..00000000 --- a/FPForge/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -loom.platform=forge \ No newline at end of file diff --git a/FPShared/build.gradle b/FPShared/build.gradle deleted file mode 100644 index 5d9907ba..00000000 --- a/FPShared/build.gradle +++ /dev/null @@ -1,32 +0,0 @@ -dependencies { - // We depend on forge loader here to use the forge @Environment annotations and get the mixin dependencies - // Do NOT use other classes from forge loader - modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" - -} - -// The shared project doesn't need to be built - -tasks.withType(JavaCompile) { - onlyIf { - false - } -} - -tasks.named('jar') { - onlyIf { - false - } -} - -tasks.named('remapJar') { - onlyIf { - false - } -} - -tasks.named('runClient') { - onlyIf { - false - } -} \ No newline at end of file diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/config/CustomConfigScreen.java b/FPShared/src/main/java/dev/tr7zw/firstperson/config/CustomConfigScreen.java deleted file mode 100644 index 5210a7b8..00000000 --- a/FPShared/src/main/java/dev/tr7zw/firstperson/config/CustomConfigScreen.java +++ /dev/null @@ -1,150 +0,0 @@ -package dev.tr7zw.firstperson.config; - -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.atomic.AtomicReference; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Supplier; - -import com.mojang.blaze3d.vertex.PoseStack; - -import net.minecraft.client.CycleOption; -import net.minecraft.client.Minecraft; -import net.minecraft.client.ProgressOption; -import net.minecraft.client.gui.components.AbstractWidget; -import net.minecraft.client.gui.components.Button; -import net.minecraft.client.gui.components.Button.OnPress; -import net.minecraft.client.gui.components.CycleButton; -import net.minecraft.client.gui.components.CycleButton.TooltipSupplier; -import net.minecraft.client.gui.components.OptionsList; -import net.minecraft.client.gui.components.SliderButton; -import net.minecraft.client.gui.screens.OptionsSubScreen; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.CommonComponents; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.util.FormattedCharSequence; - -public abstract class CustomConfigScreen extends Screen { - - protected final Screen lastScreen; - private OptionsList list; - - public CustomConfigScreen(Screen lastScreen, String title) { - super(new TranslatableComponent(title)); - this.lastScreen = lastScreen; - } - - @Override - public void removed() { - save(); - } - - @Override - public void onClose() { - this.minecraft.setScreen(this.lastScreen); - } - - public OptionsList getOptions() { - return list; - } - - protected void init() { - this.list = new OptionsList(this.minecraft, this.width, this.height, 32, this.height - 32, 25); - this.addWidget(this.list); - this.createFooter(); - initialize(); - } - - public abstract void initialize(); - - public abstract void save(); - - protected void createFooter() { - this.addRenderableWidget( - new Button(this.width / 2 - 100, this.height - 27, 200, 20, CommonComponents.GUI_DONE, new OnPress() { - - @Override - public void onPress(Button button) { - CustomConfigScreen.this.onClose(); - } - })); - } - - public void render(PoseStack poseStack, int i, int j, float f) { - this.renderBackground(poseStack); - this.list.render(poseStack, i, j, f); - drawCenteredString(poseStack, this.font, this.title, this.width / 2, 20, 16777215); - super.render(poseStack, i, j, f); - List list = OptionsSubScreen.tooltipAt(this.list, i, j); - this.renderTooltip(poseStack, list, i, j); - } - - private void updateText(ProgressOption option) { - AbstractWidget widget = getOptions().findOption(option); - if(widget instanceof SliderButton) { - ((SliderButton)widget).setMessage(option.getMessage(Minecraft.getInstance().options)); - } - } - - public CycleOption getBooleanOption(String translationKey, Supplier current, - Consumer update) { - return CycleOption.createBinaryOption(translationKey, new TranslatableComponent(translationKey + ".on"), - new TranslatableComponent(translationKey + ".off"), options -> current.get(), - (options, option, boolean_) -> update.accept(boolean_)); - } - - public CycleOption getOnOffOption(String translationKey, Supplier current, - Consumer update) { - return CycleOption.createOnOff(translationKey, options -> current.get(), - (options, option, boolean_) -> update.accept(boolean_)); - } - - public ProgressOption getDoubleOption(String translationKey, float min, float max, float steps, Supplier current, - Consumer update) { - TranslatableComponent comp = new TranslatableComponent(translationKey); - return new ProgressOption(translationKey, min, max, steps, (options) -> current.get(), (options, val) -> update.accept(val), (options, opt) -> comp.append(new TextComponent(": "+opt.get(options)))); - } - - public ProgressOption getDoubleOption(String translationKey, float min, float max, float steps, Supplier current, - Consumer update, String tooltip) { - TranslatableComponent comp = new TranslatableComponent(translationKey); - return new ProgressOption(translationKey, min, max, steps, (options) -> current.get(), (options, val) -> update.accept(val), (options, opt) -> comp.append(new TextComponent(": "+opt.get(options))), (minecraft) -> minecraft.font.split(new TranslatableComponent(tooltip), 200)); - } - - public ProgressOption getIntOption(String translationKey, float min, float max, Supplier current, - Consumer update) { - TranslatableComponent comp = new TranslatableComponent(translationKey); - AtomicReference option = new AtomicReference<>(); - option.set(new ProgressOption(translationKey, min, max, 1, (options) -> (double)current.get(), (options, val) -> {update.accept(val.intValue()); updateText(option.get());}, (options, opt) -> comp.copy().append(": " + current.get()))); - return option.get(); - } - - public ProgressOption getIntOption(String translationKey, float min, float max, Supplier current, - Consumer update, String tooltip) { - TranslatableComponent comp = new TranslatableComponent(translationKey); - return new ProgressOption(translationKey, min, max, 1, (options) -> (double)current.get(), (options, val) -> update.accept(val.intValue()), (options, opt) -> comp, (minecraft) -> minecraft.font.split(new TranslatableComponent(tooltip), 200)); - } - - public CycleOption getEnumOption(String translationKey, Class targetEnum, Supplier current, - Consumer update) { - return CycleOption.create(translationKey, Arrays.asList(targetEnum.getEnumConstants()), - (t) -> new TranslatableComponent(translationKey + "." + t.name()), options -> current.get(), - (options, option, value) -> update.accept(value)); - } - - public Function> createStaticTooltip(String translationKey) { - TranslatableComponent component = new TranslatableComponent(translationKey); - return (minecraft) -> { - return new TooltipSupplier() { - - @Override - public List apply(T t) { - return minecraft.font.split(component, 200); - } - }; - }; - } - -} diff --git a/FPShared/src/main/resources/assets/firstperson/textures/features/back/butterfly.png b/FPShared/src/main/resources/assets/firstperson/textures/features/back/butterfly.png deleted file mode 100644 index 7940d684..00000000 Binary files a/FPShared/src/main/resources/assets/firstperson/textures/features/back/butterfly.png and /dev/null differ diff --git a/FPShared/src/main/resources/assets/firstperson/textures/features/back/butterfly.txt b/FPShared/src/main/resources/assets/firstperson/textures/features/back/butterfly.txt deleted file mode 100644 index 3078948a..00000000 --- a/FPShared/src/main/resources/assets/firstperson/textures/features/back/butterfly.txt +++ /dev/null @@ -1 +0,0 @@ -https://favpng.com/png_view/abc/k6FDxutv by augustrei9 \ No newline at end of file diff --git a/FPShared/src/main/resources/assets/firstperson/textures/features/back/fantasywings.png b/FPShared/src/main/resources/assets/firstperson/textures/features/back/fantasywings.png deleted file mode 100644 index ea090eda..00000000 Binary files a/FPShared/src/main/resources/assets/firstperson/textures/features/back/fantasywings.png and /dev/null differ diff --git a/FPShared/src/main/resources/assets/firstperson/textures/features/back/fantasywings.txt b/FPShared/src/main/resources/assets/firstperson/textures/features/back/fantasywings.txt deleted file mode 100644 index c6262d9a..00000000 --- a/FPShared/src/main/resources/assets/firstperson/textures/features/back/fantasywings.txt +++ /dev/null @@ -1 +0,0 @@ -https://favpng.com/png_view/creative-wings-butterfly-wing-png/0uQxBRfs by ciranoale \ No newline at end of file diff --git a/FPShared/src/main/resources/assets/firstperson/textures/features/boots/boot_default.png b/FPShared/src/main/resources/assets/firstperson/textures/features/boots/boot_default.png deleted file mode 100644 index 90faf4fa..00000000 Binary files a/FPShared/src/main/resources/assets/firstperson/textures/features/boots/boot_default.png and /dev/null differ diff --git a/FPShared/src/main/resources/assets/firstperson/textures/features/hat/plunger.png b/FPShared/src/main/resources/assets/firstperson/textures/features/hat/plunger.png deleted file mode 100644 index 7107f6d4..00000000 Binary files a/FPShared/src/main/resources/assets/firstperson/textures/features/hat/plunger.png and /dev/null differ diff --git a/FPShared/src/main/resources/assets/firstperson/textures/gui/cosmetics.png b/FPShared/src/main/resources/assets/firstperson/textures/gui/cosmetics.png deleted file mode 100644 index c17c2717..00000000 Binary files a/FPShared/src/main/resources/assets/firstperson/textures/gui/cosmetics.png and /dev/null differ diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java b/Shared/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java similarity index 95% rename from FPShared/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java rename to Shared/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java index 0ee5ef4d..f20fb044 100644 --- a/FPShared/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java +++ b/Shared/src/main/java/dev/tr7zw/firstperson/FirstPersonModelCore.java @@ -11,7 +11,7 @@ import com.google.gson.GsonBuilder; import com.mojang.blaze3d.vertex.PoseStack; -import dev.tr7zw.firstperson.config.CustomConfigScreen; +import dev.tr7zw.config.CustomConfigScreen; import dev.tr7zw.firstperson.config.FirstPersonSettings; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; @@ -110,6 +110,12 @@ public void save() { writeSettings(); } + @Override + public void reset() { + config = new FirstPersonSettings(); + writeSettings(); + } + }; return screen; diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/MinecraftWrapper.java b/Shared/src/main/java/dev/tr7zw/firstperson/MinecraftWrapper.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/MinecraftWrapper.java rename to Shared/src/main/java/dev/tr7zw/firstperson/MinecraftWrapper.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/config/FirstPersonSettings.java b/Shared/src/main/java/dev/tr7zw/firstperson/config/FirstPersonSettings.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/config/FirstPersonSettings.java rename to Shared/src/main/java/dev/tr7zw/firstperson/config/FirstPersonSettings.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixinbase/ModelPartBase.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixinbase/ModelPartBase.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixinbase/ModelPartBase.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixinbase/ModelPartBase.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixins/ArmorFeatureRendererMixin.java diff --git a/Shared/src/main/java/dev/tr7zw/firstperson/mixins/DonorAbstractClientPlayerMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/DonorAbstractClientPlayerMixin.java new file mode 100644 index 00000000..d0b9de8e --- /dev/null +++ b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/DonorAbstractClientPlayerMixin.java @@ -0,0 +1,43 @@ +package dev.tr7zw.firstperson.mixins; + +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; + +import dev.tr7zw.donor.DonorProvider; +import dev.tr7zw.donor.DonorSkinProvider; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.resources.ResourceLocation; + +@Mixin(AbstractClientPlayer.class) +@Unique +public class DonorAbstractClientPlayerMixin implements DonorProvider { + + public DonorSkinProvider trDonorProvider = null; + + @Inject(method = "getSkinTextureLocation", at = @At("HEAD"), cancellable = true) + public void getSkinTextureLocationDonor(CallbackInfoReturnable ci) { + ResourceLocation loc = getAnimatedSkin(); + if (loc != null) { + ci.setReturnValue(loc); + ci.cancel(); + } + } + + /** + * This method ensures using the @Unique annotation that only one implementation + * runs. Not a perfect solution, hit me up if there is a better one + * + * @return + */ + @Override + public ResourceLocation getAnimatedSkin() { + if (trDonorProvider == null) { + trDonorProvider = new DonorSkinProvider(((AbstractClientPlayer) (Object) this).getUUID()); + } + return trDonorProvider.getSkin(); + } + +} diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixins/FeatureRendererMixin.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixins/FishingBobberRendererMixin.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemFeatureRendererMixin.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixins/HeldItemRendererMixin.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixins/LivingEntityRendererMixin.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixins/ModelPartMixin.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRenderMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRenderMixin.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRenderMixin.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixins/PlayerRenderMixin.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixins/RenderDispatcherMixin.java diff --git a/FPShared/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java b/Shared/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java similarity index 100% rename from FPShared/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java rename to Shared/src/main/java/dev/tr7zw/firstperson/mixins/WorldRendererMixin.java diff --git a/FPShared/src/main/resources/assets/firstperson/icon.png b/Shared/src/main/resources/assets/firstperson/icon.png similarity index 100% rename from FPShared/src/main/resources/assets/firstperson/icon.png rename to Shared/src/main/resources/assets/firstperson/icon.png diff --git a/FPShared/src/main/resources/assets/firstperson/lang/en_us.json b/Shared/src/main/resources/assets/firstperson/lang/en_us.json similarity index 100% rename from FPShared/src/main/resources/assets/firstperson/lang/en_us.json rename to Shared/src/main/resources/assets/firstperson/lang/en_us.json diff --git a/FPShared/src/main/resources/assets/firstperson/lang/tr_tr.json b/Shared/src/main/resources/assets/firstperson/lang/tr_tr.json similarity index 100% rename from FPShared/src/main/resources/assets/firstperson/lang/tr_tr.json rename to Shared/src/main/resources/assets/firstperson/lang/tr_tr.json diff --git a/FPShared/src/main/resources/assets/firstperson/lang/zh_cn.json b/Shared/src/main/resources/assets/firstperson/lang/zh_cn.json similarity index 100% rename from FPShared/src/main/resources/assets/firstperson/lang/zh_cn.json rename to Shared/src/main/resources/assets/firstperson/lang/zh_cn.json diff --git a/FPShared/src/main/resources/firstperson.mixins.json b/Shared/src/main/resources/firstperson.mixins.json similarity index 86% rename from FPShared/src/main/resources/firstperson.mixins.json rename to Shared/src/main/resources/firstperson.mixins.json index fe7deba7..2db13e25 100644 --- a/FPShared/src/main/resources/firstperson.mixins.json +++ b/Shared/src/main/resources/firstperson.mixins.json @@ -14,7 +14,8 @@ "ModelPartMixin", "LivingEntityRendererMixin", "FeatureRendererMixin", - "ArmorFeatureRendererMixin" + "ArmorFeatureRendererMixin", + "DonorAbstractClientPlayerMixin" ], "injectors": { "defaultRequire": 1 diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 8196a437..00000000 --- a/build.gradle +++ /dev/null @@ -1,59 +0,0 @@ -plugins { - id "dev.architectury.loom" version "0.10.0-SNAPSHOT" apply false - //id "fabric-loom" version "0.10-SNAPSHOT" apply false -} - -subprojects { - apply plugin: "dev.architectury.loom" - //apply plugin: "fabric-loom" - - loom { - refmapName = "firstperson.refmap.mixins.json" - } - - dependencies { - minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" - mappings loom.officialMojangMappings() - } -} - -allprojects { - apply plugin: "java" - apply plugin: "maven-publish" - - archivesBaseName = rootProject.archives_base_name - version = rootProject.mod_version + "-mc" + rootProject.minecraft_version - group = rootProject.maven_group - - repositories { - // Add repositories to retrieve artifacts from in here. - // You should only use this when depending on other mods because - // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. - // See https://docs.gradle.org/current/userguide/declaring_repositories.html - // for more information about repositories. - - maven { - // for fabric - url = "https://maven.modmuss50.me/" - } - maven { - url "https://cursemaven.com" - } - } - - tasks.withType(JavaCompile) { - options.encoding = "UTF-8" - - // The Minecraft launcher currently installs Java 8 for users, so your mod probably wants to target Java 8 too - // JDK 9 introduced a new way of specifying this that will make sure no newer classes or methods are used. - // We'll use that if it's available, but otherwise we'll use the older option. - def targetVersion = 16 - if (JavaVersion.current().isJava9Compatible()) { - options.release = targetVersion - } - } - - java { - withSourcesJar() - } -} \ No newline at end of file diff --git a/gradle-compose.yml b/gradle-compose.yml new file mode 100644 index 00000000..0bf5769e --- /dev/null +++ b/gradle-compose.yml @@ -0,0 +1,18 @@ +version: '0.0.1' +source: "https://github.com/tr7zw/ForgeFabricComposeTemplate/tree/1.18.2-shared/" +replacements: + group: "dev.tr7zw" + name: "FirstPerson" + id: "firstperson" + version: "2.1.0" + author: "tr7zw" + relocationpackage: "dev.tr7zw.firstperson" + dependencies: "" + licensename: "LICENSE" +rootProject: + template: "." +subProjects: + FPFabric: + template: "Fabric" + FPForge: + template: "Forge" \ No newline at end of file diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index 6f43d40f..00000000 --- a/gradle.properties +++ /dev/null @@ -1,18 +0,0 @@ -# Done to increase the memory available to gradle. -org.gradle.jvmargs=-Xmx1G - -# Minecraft Properties -minecraft_version = 1.18 -fabric_loader_version = 0.12.9 -forge_version = 38.0.16 - -# Mod Properties -mod_version = 2.1.0 -maven_group = dev.tr7zw -archives_base_name = firstperson -modid = firstperson -author = tr7zw - -# Dependencies -fabric_api_version = 0.44.0+1.18 -mod_menu_release = 3479754 \ No newline at end of file diff --git a/gradle/gradle-compose.jar b/gradle/gradle-compose.jar new file mode 100644 index 00000000..0aa632c2 Binary files /dev/null and b/gradle/gradle-compose.jar differ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7a3265ee..7454180f 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8ad73a75..ffed3a25 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip diff --git a/gradlew b/gradlecw old mode 100755 new mode 100644 similarity index 74% rename from gradlew rename to gradlecw index cccdd3d5..1d92af08 --- a/gradlew +++ b/gradlecw @@ -1,5 +1,21 @@ #!/usr/bin/env sh +# +# Copyright 2015 the original author or authors. +# +# 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 +# +# https://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. +# + ############################################################################## ## ## Gradle start up script for UN*X @@ -28,7 +44,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -66,6 +82,8 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +COMPOSE=$APP_HOME/gradle/gradle-compose.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -109,10 +127,11 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath @@ -138,35 +157,34 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi + + +"$JAVACMD" -jar $COMPOSE + # Escape application args save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=$(save "$@") +APP_ARGS=`save "$@"` # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlecw.bat similarity index 64% rename from gradlew.bat rename to gradlecw.bat index f9553162..1d4b9821 100644 --- a/gradlew.bat +++ b/gradlecw.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,28 +64,17 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set COMPOSE=%APP_HOME%\gradle\gradle-compose.jar + + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" -jar "%COMPOSE%" %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 6a694004..00000000 --- a/settings.gradle +++ /dev/null @@ -1,14 +0,0 @@ -pluginManagement { - repositories { - maven { url "https://maven.fabricmc.net/" } - maven { url "https://maven.architectury.dev/" } - maven { url "https://maven.minecraftforge.net/" } - gradlePluginPortal() - } -} - -include("FPShared") -include("FPFabric") -include("FPForge") - -rootProject.name = "FirstPersonModel" \ No newline at end of file