From 2fe86bd626a9c5aaee47983ed1caf04fe49ed085 Mon Sep 17 00:00:00 2001 From: M'aiq Date: Tue, 15 Jun 2021 00:45:55 -0500 Subject: [PATCH 1/9] Swap to Bepinex --- .github/workflows/build.yml | 31 ++++++++++++++++++ .github/workflows/makefile.yml | 30 ----------------- .../BetterHands.sln | 0 .../{ => BetterHands}/BetterHands.csproj | 10 ------ .../Configs/Customization.cs | 0 .../{ => BetterHands}/Configs/MagPalm.cs | 0 .../Configs/MagPalmControls.cs | 0 BetterHands/{ => BetterHands}/Configs/Root.cs | 0 .../{ => BetterHands}/Configs/zCheat.cs | 0 .../Customization/HandsRecolor.cs | 0 .../MagPalming/Functionality.cs | 8 ++--- .../{ => BetterHands}/MagPalming/Input.cs | 10 +++--- .../{ => BetterHands}/MagPalming/MagPalm.cs | 4 +-- .../{ => BetterHands}/MagPalming/Visual.cs | 0 BetterHands/{ => BetterHands}/Plugin.cs | 14 ++++---- BetterHands/hookgen.conf | 1 - .../libs}/Assembly-CSharp_publicized.dll | Bin .../libs}/MMHOOK_Assembly-CSharp.dll | Bin {libs => BetterHands/libs}/README.md | 0 BetterHands/manifest.json | 17 ---------- nuget.config => BetterHands/nuget.config | 0 README.md | 4 +-- makefile | 25 -------------- thunderstore/.gitignore | 2 ++ thunderstore/icon.png | Bin 0 -> 17504 bytes thunderstore/make_package.sh | 27 +++++++++++++++ thunderstore/manifest.json | 9 +++++ 27 files changed, 90 insertions(+), 102 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/makefile.yml rename BetterHands.sln => BetterHands/BetterHands.sln (100%) rename BetterHands/{ => BetterHands}/BetterHands.csproj (73%) rename BetterHands/{ => BetterHands}/Configs/Customization.cs (100%) rename BetterHands/{ => BetterHands}/Configs/MagPalm.cs (100%) rename BetterHands/{ => BetterHands}/Configs/MagPalmControls.cs (100%) rename BetterHands/{ => BetterHands}/Configs/Root.cs (100%) rename BetterHands/{ => BetterHands}/Configs/zCheat.cs (100%) rename BetterHands/{ => BetterHands}/Customization/HandsRecolor.cs (100%) rename BetterHands/{ => BetterHands}/MagPalming/Functionality.cs (92%) rename BetterHands/{ => BetterHands}/MagPalming/Input.cs (94%) rename BetterHands/{ => BetterHands}/MagPalming/MagPalm.cs (96%) rename BetterHands/{ => BetterHands}/MagPalming/Visual.cs (100%) rename BetterHands/{ => BetterHands}/Plugin.cs (85%) delete mode 100644 BetterHands/hookgen.conf rename {libs => BetterHands/libs}/Assembly-CSharp_publicized.dll (100%) rename {libs => BetterHands/libs}/MMHOOK_Assembly-CSharp.dll (100%) rename {libs => BetterHands/libs}/README.md (100%) delete mode 100644 BetterHands/manifest.json rename nuget.config => BetterHands/nuget.config (100%) delete mode 100644 makefile create mode 100644 thunderstore/.gitignore create mode 100644 thunderstore/icon.png create mode 100644 thunderstore/make_package.sh create mode 100644 thunderstore/manifest.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..a5cc1c6 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,31 @@ +name: Build project + +on: [ push ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - run: git fetch --prune --unshallow + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 5.0.x + + - name: Install dependencies + run: dotnet restore BetterHands/ + + - name: Build + run: dotnet build BetterHands/ --configuration Release --no-restore + + - name: Package + run: bash thunderstore/make_package.sh + + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: Thunderstore Package + path: thunderstore/BetterHands.zip \ No newline at end of file diff --git a/.github/workflows/makefile.yml b/.github/workflows/makefile.yml deleted file mode 100644 index 2731a8e..0000000 --- a/.github/workflows/makefile.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: makefile - -on: - push: - pull_request: - branches: - - master - -jobs: - makefile: - name: Run Makefile - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Setup .NET Core - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 3.1.x - - - name: Execute make - shell: bash - run: make - - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: BetterHands - path: BetterHands.deli diff --git a/BetterHands.sln b/BetterHands/BetterHands.sln similarity index 100% rename from BetterHands.sln rename to BetterHands/BetterHands.sln diff --git a/BetterHands/BetterHands.csproj b/BetterHands/BetterHands/BetterHands.csproj similarity index 73% rename from BetterHands/BetterHands.csproj rename to BetterHands/BetterHands/BetterHands.csproj index f288ad4..4ee4235 100644 --- a/BetterHands/BetterHands.csproj +++ b/BetterHands/BetterHands/BetterHands.csproj @@ -7,7 +7,6 @@ - @@ -22,13 +21,4 @@ - - - Always - - - Always - - - diff --git a/BetterHands/Configs/Customization.cs b/BetterHands/BetterHands/Configs/Customization.cs similarity index 100% rename from BetterHands/Configs/Customization.cs rename to BetterHands/BetterHands/Configs/Customization.cs diff --git a/BetterHands/Configs/MagPalm.cs b/BetterHands/BetterHands/Configs/MagPalm.cs similarity index 100% rename from BetterHands/Configs/MagPalm.cs rename to BetterHands/BetterHands/Configs/MagPalm.cs diff --git a/BetterHands/Configs/MagPalmControls.cs b/BetterHands/BetterHands/Configs/MagPalmControls.cs similarity index 100% rename from BetterHands/Configs/MagPalmControls.cs rename to BetterHands/BetterHands/Configs/MagPalmControls.cs diff --git a/BetterHands/Configs/Root.cs b/BetterHands/BetterHands/Configs/Root.cs similarity index 100% rename from BetterHands/Configs/Root.cs rename to BetterHands/BetterHands/Configs/Root.cs diff --git a/BetterHands/Configs/zCheat.cs b/BetterHands/BetterHands/Configs/zCheat.cs similarity index 100% rename from BetterHands/Configs/zCheat.cs rename to BetterHands/BetterHands/Configs/zCheat.cs diff --git a/BetterHands/Customization/HandsRecolor.cs b/BetterHands/BetterHands/Customization/HandsRecolor.cs similarity index 100% rename from BetterHands/Customization/HandsRecolor.cs rename to BetterHands/BetterHands/Customization/HandsRecolor.cs diff --git a/BetterHands/MagPalming/Functionality.cs b/BetterHands/BetterHands/MagPalming/Functionality.cs similarity index 92% rename from BetterHands/MagPalming/Functionality.cs rename to BetterHands/BetterHands/MagPalming/Functionality.cs index bbc42da..4e6d3d3 100644 --- a/BetterHands/MagPalming/Functionality.cs +++ b/BetterHands/BetterHands/MagPalming/Functionality.cs @@ -45,7 +45,7 @@ private void FVRFireArmReloadTriggerMag_OnTriggerEnter(On.FistVR.FVRFireArmReloa { var triggerWell = collider.GetComponent(); var firearm = triggerWell.FireArm; - if (mag.MagazineType == triggerWell.TypeOverride || mag.MagazineType == firearm.MagazineType && (firearm.EjectDelay <= 0f || mag != firearm.LastEjectedMag) && firearm.Magazine == null) + if (mag.MagazineType == triggerWell.TypeOverride || (mag.MagazineType == firearm.MagazineType && (firearm.EjectDelay <= 0f || mag != firearm.LastEjectedMag) && firearm.Magazine == null)) { // Remove mag from qb, load, buzz loading hand, and unhide controller geo mag.SetQuickBeltSlot(null); @@ -65,7 +65,7 @@ private void FVRFireArmClipTriggerClip_OnTriggerEnter(On.FistVR.FVRFireArmClipTr { var triggerWell = collider.gameObject.GetComponent(); var firearm = triggerWell.FireArm; - if (triggerWell != null && triggerWell.FireArm != null && firearm.ClipType == clip.ClipType && firearm.ClipEjectDelay <= 0f && firearm.Clip == null) + if (triggerWell?.FireArm != null && firearm.ClipType == clip.ClipType && firearm.ClipEjectDelay <= 0f && firearm.Clip == null) { // Remove from qb, load, buzz loading hand, and unhide controller geo clip.SetQuickBeltSlot(null); @@ -93,7 +93,7 @@ private bool FirearmLoadCheck(FVRPhysicalObject obj, Collider col, string layer) if (fvrObj != null && MP.ObjInPalmSlot(fvrObj.QuickbeltSlot)) { - return (col.gameObject.CompareTag(layer)); + return col.gameObject.CompareTag(layer); } } @@ -140,7 +140,7 @@ private void PhysicalMagazineReleaseLatch_OnCollisionStay(On.FistVR.PhysicalMaga if (GM.CurrentSceneSettings.AreQuickbeltSlotsEnabled) { - if (col.collider.attachedRigidbody != null && col.collider.attachedRigidbody.gameObject.GetComponent() != null) + if (col.collider.attachedRigidbody?.gameObject.GetComponent() != null) { self.timeSinceLastCollision = 0f; } diff --git a/BetterHands/MagPalming/Input.cs b/BetterHands/BetterHands/MagPalming/Input.cs similarity index 94% rename from BetterHands/MagPalming/Input.cs rename to BetterHands/BetterHands/MagPalming/Input.cs index e41a7e8..a5da83a 100644 --- a/BetterHands/MagPalming/Input.cs +++ b/BetterHands/BetterHands/MagPalming/Input.cs @@ -169,10 +169,10 @@ private bool AllowPalming(FVRPhysicalObject item) { var cheatCfg = _config.zCheat; - return (item is FVRFireArmMagazine mag && mag.Size <= cheatCfg.SizeLimit.Value || + return (item is FVRFireArmMagazine mag && mag.Size <= cheatCfg.SizeLimit.Value) || item is FVRFireArmClip || - item is FVRFireArmRound && _config.MagPalm.RoundPalm.Value || - cheatCfg.CursedPalms.Value && !item.m_isHardnessed); + (item is FVRFireArmRound && _config.MagPalm.RoundPalm.Value) || + (cheatCfg.CursedPalms.Value && !item.m_isHardnessed); } // If mag palm keybind matches grabbity keybind, suppress mag palm input if grabbity sphere is on an item @@ -181,8 +181,8 @@ private bool GrabbityProtection(FVRViveHand hand, MagPalmControlsConfig.Keybind if (_config.MagPalm.Controls.GrabbityProtection.Value) { var grabbityState = GM.Options.ControlOptions.WIPGrabbityButtonState; - var grabbityConflict = (grabbityState == ControlOptions.WIPGrabbityButton.Trigger && (keybind == MagPalmControlsConfig.Keybind.Trigger) - || grabbityState == ControlOptions.WIPGrabbityButton.Grab && (keybind == MagPalmControlsConfig.Keybind.Grip)); + var grabbityConflict = ((grabbityState == ControlOptions.WIPGrabbityButton.Trigger && (keybind == MagPalmControlsConfig.Keybind.Trigger)) + || (grabbityState == ControlOptions.WIPGrabbityButton.Grab && (keybind == MagPalmControlsConfig.Keybind.Grip))); if (grabbityConflict) { return !hand.Grabbity_HoverSphere.gameObject.activeSelf; diff --git a/BetterHands/MagPalming/MagPalm.cs b/BetterHands/BetterHands/MagPalming/MagPalm.cs similarity index 96% rename from BetterHands/MagPalming/MagPalm.cs rename to BetterHands/BetterHands/MagPalming/MagPalm.cs index c59ecbf..38ca4aa 100644 --- a/BetterHands/MagPalming/MagPalm.cs +++ b/BetterHands/BetterHands/MagPalming/MagPalm.cs @@ -130,14 +130,14 @@ private void ConfigMagPalming(Transform hand) // Is object in any magpalm slot public bool ObjInPalmSlot(FVRQuickBeltSlot slot) { - return (slot != null && (slot == QBList[HandSlots[0]] || slot == QBList[HandSlots[1]])); + return slot != null && (slot == QBList[HandSlots[0]] || slot == QBList[HandSlots[1]]); } public bool IsSpecificPalmSlotEmpty(FVRViveHand hand) { var qbSlot = hand.IsThisTheRightHand ? QBList[HandSlots[0]] : QBList[HandSlots[1]]; - return (qbSlot.CurObject == null); + return qbSlot.CurObject == null; } public FVRViveHand GetHandFromSlot(FVRQuickBeltSlot slot) diff --git a/BetterHands/MagPalming/Visual.cs b/BetterHands/BetterHands/MagPalming/Visual.cs similarity index 100% rename from BetterHands/MagPalming/Visual.cs rename to BetterHands/BetterHands/MagPalming/Visual.cs diff --git a/BetterHands/Plugin.cs b/BetterHands/BetterHands/Plugin.cs similarity index 85% rename from BetterHands/Plugin.cs rename to BetterHands/BetterHands/Plugin.cs index e1d631f..2db6983 100644 --- a/BetterHands/Plugin.cs +++ b/BetterHands/BetterHands/Plugin.cs @@ -1,16 +1,18 @@ -using BetterHands.Configs; +using BepInEx; +using BetterHands.Configs; using BetterHands.Customization; using BetterHands.MagPalming; -using Deli.Setup; using FistVR; using Sodalite.Api; using System; -using System.Linq; using UnityEngine; namespace BetterHands { - public class Plugin : DeliBehaviour + [BepInPlugin("maiq.BetterHands", "BetterHands", "1.4.0")] + [BepInDependency("nrgill28.Sodalite")] + [BepInProcess("h3vr.exe")] + public class Plugin : BaseUnityPlugin { private readonly RootConfig _config; @@ -62,7 +64,7 @@ private void OnDestroy() private void ScoreSubmissionManager() { var cfg = _config.zCheat; - if (_config.MagPalm.Enable.Value && cfg.CursedPalms.Value || cfg.SizeLimit.Value > FVRPhysicalObject.FVRPhysicalObjectSize.Medium) + if ((_config.MagPalm.Enable.Value && cfg.CursedPalms.Value) || cfg.SizeLimit.Value > FVRPhysicalObject.FVRPhysicalObjectSize.Medium) { Logger.LogDebug("TNH scoring is disabled"); _leaderboardLock ??= LeaderboardAPI.GetLeaderboardDisableLock(); @@ -113,7 +115,7 @@ public static GameObject GetControllerFrom(FVRViveHand hand) hand.Display_Controller_WMR }; - var geo = controllerGeos.FirstOrDefault(g => g.activeSelf); + var geo = Array.Find(controllerGeos, g => g.activeSelf); return geo ?? hand.Display_Controller; } diff --git a/BetterHands/hookgen.conf b/BetterHands/hookgen.conf deleted file mode 100644 index 8f8ff48..0000000 --- a/BetterHands/hookgen.conf +++ /dev/null @@ -1 +0,0 @@ -Assembly-CSharp.dll \ No newline at end of file diff --git a/libs/Assembly-CSharp_publicized.dll b/BetterHands/libs/Assembly-CSharp_publicized.dll similarity index 100% rename from libs/Assembly-CSharp_publicized.dll rename to BetterHands/libs/Assembly-CSharp_publicized.dll diff --git a/libs/MMHOOK_Assembly-CSharp.dll b/BetterHands/libs/MMHOOK_Assembly-CSharp.dll similarity index 100% rename from libs/MMHOOK_Assembly-CSharp.dll rename to BetterHands/libs/MMHOOK_Assembly-CSharp.dll diff --git a/libs/README.md b/BetterHands/libs/README.md similarity index 100% rename from libs/README.md rename to BetterHands/libs/README.md diff --git a/BetterHands/manifest.json b/BetterHands/manifest.json deleted file mode 100644 index 86875f7..0000000 --- a/BetterHands/manifest.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "guid": "maiq.betterhands", - "version": "1.3.0", - "require": "0.4.1", - "name": "BetterHands", - "description": "Recolor controller geo, resize interaction spheres, and add mag palming.", - "authors": [ "M'aiq" ], - "source_url": "https://github.com/Maiq-The-Dude/BetterHands/", - "assets": { - "patcher": { - "hookgen.conf": "deli:monomod.hookgen" - }, - "setup": { - "BetterHands.dll": "deli:assembly" - } - } -} diff --git a/nuget.config b/BetterHands/nuget.config similarity index 100% rename from nuget.config rename to BetterHands/nuget.config diff --git a/README.md b/README.md index 1a44f97..cae7847 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # BetterHands [![version](https://img.shields.io/github/v/release/Maiq-The-Dude/BetterHands?&label=version&style=flat-square)](https://github.com/Maiq-The-Dude/BetterHands/releases/latest) [![discord](https://img.shields.io/discord/777351065950879744?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2&style=flat-square)](https://discord.gg/g8xeFyt42j) -A Deli mod to recolor controller geo, resize interaction spheres, and add mag palming. +A mod to recolor controller geo, resize interaction spheres, and add mag palming. All features are optional and configured via the config file. Configs can be edited mid-game, but will require a scene reload to take effect. ## Mag Palming @@ -32,7 +32,7 @@ Mag palming allows you to carry two small sized magazines in one hand. To do thi ## Manual Installation Requires -- [Deli 0.4+](https://github.com/Deli-Collective/Deli/releases) +- [BepInEx 5.4.x](https://github.com/BepInEx/BepInEx/releases) - [Sodalite](https://github.com/H3VR-Modding/Sodalite/releases) Extract the BetterHands `.zip` into the BepInEx plugins folder diff --git a/makefile b/makefile deleted file mode 100644 index aaf6c63..0000000 --- a/makefile +++ /dev/null @@ -1,25 +0,0 @@ -SHELL = /bin/bash - -GIT_BRANCH = $(shell git rev-parse --abbrev-ref HEAD) -GIT_HASH = $(shell git rev-parse HEAD) - -PROJECT = BetterHands -PACKAGE = BetterHands.deli -CONTENTS = manifest.json hookgen.conf BetterHands.dll - -CONFIG = Release -FRAMEWORK = net35 -BUILD_PROPERTIES = /p:RepositoryBranch="$(GIT_BRANCH)" /p:RepositoryCommit="$(GIT_HASH)" - -.PHONY: all build clean - -all: clean $(PACKAGE) - -build: - dotnet build --configuration $(CONFIG) --framework $(FRAMEWORK) $(BUILD_PROPERTIES) - -$(PACKAGE): build - zip -9j $@ $(addprefix $(PROJECT)/bin/$(CONFIG)/$(FRAMEWORK)/,$(CONTENTS)) - -clean: - rm -f $(PACKAGE) diff --git a/thunderstore/.gitignore b/thunderstore/.gitignore new file mode 100644 index 0000000..b1fdf51 --- /dev/null +++ b/thunderstore/.gitignore @@ -0,0 +1,2 @@ +TEMP/ +BetterHands.zip \ No newline at end of file diff --git a/thunderstore/icon.png b/thunderstore/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f23ddae92ad1a23f66970adc215755113c08c4b3 GIT binary patch literal 17504 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 F2>^EF8v6hM literal 0 HcmV?d00001 diff --git a/thunderstore/make_package.sh b/thunderstore/make_package.sh new file mode 100644 index 0000000..f3b0305 --- /dev/null +++ b/thunderstore/make_package.sh @@ -0,0 +1,27 @@ +#!/bin/bash +export TS_DIR="$(dirname "${BASH_SOURCE[0]}")" +export VERSION=$(git describe --tags --abbrev=0 | sed -n 's/v\(.\+\)/\1/p') +cd $TS_DIR + +# Delete the existing build if it exists +rm BetterHands.zip + +# Create our temp folders +mkdir -p TEMP/BetterHands/plugins + +# Copy the files into them +cp manifest.json TEMP/manifest.json +cp icon.png TEMP/icon.png +cp ../README.md TEMP/README.md +cp ../src/BetterHands/bin/Release/net35/BetterHands.dll TEMP/BetterHands/plugins/BetterHands.dll + +# Modify the version number +sed -i "s/{VERSION}/$VERSION/g" TEMP/manifest.json + +# Zip the folder +cd TEMP +zip -9r ../BetterHands.zip * + +# Delete the temp dir +cd .. +rm -r TEMP \ No newline at end of file diff --git a/thunderstore/manifest.json b/thunderstore/manifest.json new file mode 100644 index 0000000..1537bc1 --- /dev/null +++ b/thunderstore/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "BetterHands", + "version_number": "1.4.0", + "dependencies": [ + "nrgill28-Sodalite-1.0.0" + ], + "description": "A Deli mod which adds mag palming and controller color customization.", + "website_url": "https://github.com/Maiq-The-Dude/BetterHands" +} \ No newline at end of file From 3f1d4f031488a9df9d0c18ecf5c347999351f181 Mon Sep 17 00:00:00 2001 From: M'aiq Date: Tue, 15 Jun 2021 00:47:25 -0500 Subject: [PATCH 2/9] fix build --- thunderstore/make_package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thunderstore/make_package.sh b/thunderstore/make_package.sh index f3b0305..9c77c74 100644 --- a/thunderstore/make_package.sh +++ b/thunderstore/make_package.sh @@ -13,7 +13,7 @@ mkdir -p TEMP/BetterHands/plugins cp manifest.json TEMP/manifest.json cp icon.png TEMP/icon.png cp ../README.md TEMP/README.md -cp ../src/BetterHands/bin/Release/net35/BetterHands.dll TEMP/BetterHands/plugins/BetterHands.dll +cp ../BetterHands/BetterHands/bin/Release/net35/BetterHands.dll TEMP/BetterHands/plugins/BetterHands.dll # Modify the version number sed -i "s/{VERSION}/$VERSION/g" TEMP/manifest.json From 68663010ba81955aefb510de24d670ebee027693 Mon Sep 17 00:00:00 2001 From: M'aiq Date: Tue, 15 Jun 2021 01:07:59 -0500 Subject: [PATCH 3/9] Update manifest.json --- thunderstore/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/thunderstore/manifest.json b/thunderstore/manifest.json index 1537bc1..4fdd026 100644 --- a/thunderstore/manifest.json +++ b/thunderstore/manifest.json @@ -4,6 +4,6 @@ "dependencies": [ "nrgill28-Sodalite-1.0.0" ], - "description": "A Deli mod which adds mag palming and controller color customization.", + "description": "Adds mag palming and controller color customization.", "website_url": "https://github.com/Maiq-The-Dude/BetterHands" -} \ No newline at end of file +} From 23e2f0d2f1c3822444b1ba73fc3b399021f04405 Mon Sep 17 00:00:00 2001 From: M'aiq Date: Tue, 15 Jun 2021 01:46:08 -0500 Subject: [PATCH 4/9] Rename Folder --- .github/workflows/build.yml | 4 ++-- thunderstore/make_package.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a5cc1c6..16e839d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,10 +16,10 @@ jobs: dotnet-version: 5.0.x - name: Install dependencies - run: dotnet restore BetterHands/ + run: dotnet restore src/ - name: Build - run: dotnet build BetterHands/ --configuration Release --no-restore + run: dotnet build src/ --configuration Release --no-restore - name: Package run: bash thunderstore/make_package.sh diff --git a/thunderstore/make_package.sh b/thunderstore/make_package.sh index 9c77c74..f3b0305 100644 --- a/thunderstore/make_package.sh +++ b/thunderstore/make_package.sh @@ -13,7 +13,7 @@ mkdir -p TEMP/BetterHands/plugins cp manifest.json TEMP/manifest.json cp icon.png TEMP/icon.png cp ../README.md TEMP/README.md -cp ../BetterHands/BetterHands/bin/Release/net35/BetterHands.dll TEMP/BetterHands/plugins/BetterHands.dll +cp ../src/BetterHands/bin/Release/net35/BetterHands.dll TEMP/BetterHands/plugins/BetterHands.dll # Modify the version number sed -i "s/{VERSION}/$VERSION/g" TEMP/manifest.json From 843148d25844738a70673831dcf6bc328300a9c3 Mon Sep 17 00:00:00 2001 From: M'aiq Date: Tue, 15 Jun 2021 01:47:21 -0500 Subject: [PATCH 5/9] Rename Folder --- {BetterHands => src}/BetterHands.sln | 0 {BetterHands => src}/BetterHands/BetterHands.csproj | 0 .../BetterHands/Configs/Customization.cs | 0 {BetterHands => src}/BetterHands/Configs/MagPalm.cs | 0 .../BetterHands/Configs/MagPalmControls.cs | 0 {BetterHands => src}/BetterHands/Configs/Root.cs | 0 {BetterHands => src}/BetterHands/Configs/zCheat.cs | 0 .../BetterHands/Customization/HandsRecolor.cs | 0 .../BetterHands/MagPalming/Functionality.cs | 0 .../BetterHands/MagPalming/Input.cs | 0 .../BetterHands/MagPalming/MagPalm.cs | 0 .../BetterHands/MagPalming/Visual.cs | 0 {BetterHands => src}/BetterHands/Plugin.cs | 0 .../libs/Assembly-CSharp_publicized.dll | Bin .../libs/MMHOOK_Assembly-CSharp.dll | Bin {BetterHands => src}/libs/README.md | 0 {BetterHands => src}/nuget.config | 0 17 files changed, 0 insertions(+), 0 deletions(-) rename {BetterHands => src}/BetterHands.sln (100%) rename {BetterHands => src}/BetterHands/BetterHands.csproj (100%) rename {BetterHands => src}/BetterHands/Configs/Customization.cs (100%) rename {BetterHands => src}/BetterHands/Configs/MagPalm.cs (100%) rename {BetterHands => src}/BetterHands/Configs/MagPalmControls.cs (100%) rename {BetterHands => src}/BetterHands/Configs/Root.cs (100%) rename {BetterHands => src}/BetterHands/Configs/zCheat.cs (100%) rename {BetterHands => src}/BetterHands/Customization/HandsRecolor.cs (100%) rename {BetterHands => src}/BetterHands/MagPalming/Functionality.cs (100%) rename {BetterHands => src}/BetterHands/MagPalming/Input.cs (100%) rename {BetterHands => src}/BetterHands/MagPalming/MagPalm.cs (100%) rename {BetterHands => src}/BetterHands/MagPalming/Visual.cs (100%) rename {BetterHands => src}/BetterHands/Plugin.cs (100%) rename {BetterHands => src}/libs/Assembly-CSharp_publicized.dll (100%) rename {BetterHands => src}/libs/MMHOOK_Assembly-CSharp.dll (100%) rename {BetterHands => src}/libs/README.md (100%) rename {BetterHands => src}/nuget.config (100%) diff --git a/BetterHands/BetterHands.sln b/src/BetterHands.sln similarity index 100% rename from BetterHands/BetterHands.sln rename to src/BetterHands.sln diff --git a/BetterHands/BetterHands/BetterHands.csproj b/src/BetterHands/BetterHands.csproj similarity index 100% rename from BetterHands/BetterHands/BetterHands.csproj rename to src/BetterHands/BetterHands.csproj diff --git a/BetterHands/BetterHands/Configs/Customization.cs b/src/BetterHands/Configs/Customization.cs similarity index 100% rename from BetterHands/BetterHands/Configs/Customization.cs rename to src/BetterHands/Configs/Customization.cs diff --git a/BetterHands/BetterHands/Configs/MagPalm.cs b/src/BetterHands/Configs/MagPalm.cs similarity index 100% rename from BetterHands/BetterHands/Configs/MagPalm.cs rename to src/BetterHands/Configs/MagPalm.cs diff --git a/BetterHands/BetterHands/Configs/MagPalmControls.cs b/src/BetterHands/Configs/MagPalmControls.cs similarity index 100% rename from BetterHands/BetterHands/Configs/MagPalmControls.cs rename to src/BetterHands/Configs/MagPalmControls.cs diff --git a/BetterHands/BetterHands/Configs/Root.cs b/src/BetterHands/Configs/Root.cs similarity index 100% rename from BetterHands/BetterHands/Configs/Root.cs rename to src/BetterHands/Configs/Root.cs diff --git a/BetterHands/BetterHands/Configs/zCheat.cs b/src/BetterHands/Configs/zCheat.cs similarity index 100% rename from BetterHands/BetterHands/Configs/zCheat.cs rename to src/BetterHands/Configs/zCheat.cs diff --git a/BetterHands/BetterHands/Customization/HandsRecolor.cs b/src/BetterHands/Customization/HandsRecolor.cs similarity index 100% rename from BetterHands/BetterHands/Customization/HandsRecolor.cs rename to src/BetterHands/Customization/HandsRecolor.cs diff --git a/BetterHands/BetterHands/MagPalming/Functionality.cs b/src/BetterHands/MagPalming/Functionality.cs similarity index 100% rename from BetterHands/BetterHands/MagPalming/Functionality.cs rename to src/BetterHands/MagPalming/Functionality.cs diff --git a/BetterHands/BetterHands/MagPalming/Input.cs b/src/BetterHands/MagPalming/Input.cs similarity index 100% rename from BetterHands/BetterHands/MagPalming/Input.cs rename to src/BetterHands/MagPalming/Input.cs diff --git a/BetterHands/BetterHands/MagPalming/MagPalm.cs b/src/BetterHands/MagPalming/MagPalm.cs similarity index 100% rename from BetterHands/BetterHands/MagPalming/MagPalm.cs rename to src/BetterHands/MagPalming/MagPalm.cs diff --git a/BetterHands/BetterHands/MagPalming/Visual.cs b/src/BetterHands/MagPalming/Visual.cs similarity index 100% rename from BetterHands/BetterHands/MagPalming/Visual.cs rename to src/BetterHands/MagPalming/Visual.cs diff --git a/BetterHands/BetterHands/Plugin.cs b/src/BetterHands/Plugin.cs similarity index 100% rename from BetterHands/BetterHands/Plugin.cs rename to src/BetterHands/Plugin.cs diff --git a/BetterHands/libs/Assembly-CSharp_publicized.dll b/src/libs/Assembly-CSharp_publicized.dll similarity index 100% rename from BetterHands/libs/Assembly-CSharp_publicized.dll rename to src/libs/Assembly-CSharp_publicized.dll diff --git a/BetterHands/libs/MMHOOK_Assembly-CSharp.dll b/src/libs/MMHOOK_Assembly-CSharp.dll similarity index 100% rename from BetterHands/libs/MMHOOK_Assembly-CSharp.dll rename to src/libs/MMHOOK_Assembly-CSharp.dll diff --git a/BetterHands/libs/README.md b/src/libs/README.md similarity index 100% rename from BetterHands/libs/README.md rename to src/libs/README.md diff --git a/BetterHands/nuget.config b/src/nuget.config similarity index 100% rename from BetterHands/nuget.config rename to src/nuget.config From 692b2db73f3a4506df922402905179e98b68e124 Mon Sep 17 00:00:00 2001 From: M'aiq Date: Tue, 15 Jun 2021 12:09:50 -0500 Subject: [PATCH 6/9] Update make_package.sh remove strict structure for ts pkg --- thunderstore/make_package.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/thunderstore/make_package.sh b/thunderstore/make_package.sh index f3b0305..8a00669 100644 --- a/thunderstore/make_package.sh +++ b/thunderstore/make_package.sh @@ -7,13 +7,13 @@ cd $TS_DIR rm BetterHands.zip # Create our temp folders -mkdir -p TEMP/BetterHands/plugins +mkdir -p TEMP/ # Copy the files into them cp manifest.json TEMP/manifest.json cp icon.png TEMP/icon.png cp ../README.md TEMP/README.md -cp ../src/BetterHands/bin/Release/net35/BetterHands.dll TEMP/BetterHands/plugins/BetterHands.dll +cp ../src/BetterHands/bin/Release/net35/BetterHands.dll TEMP/BetterHands.dll # Modify the version number sed -i "s/{VERSION}/$VERSION/g" TEMP/manifest.json @@ -24,4 +24,4 @@ zip -9r ../BetterHands.zip * # Delete the temp dir cd .. -rm -r TEMP \ No newline at end of file +rm -r TEMP From 83d5445026e50d47535db6dce4fced70bdce291b Mon Sep 17 00:00:00 2001 From: M'aiq Date: Tue, 15 Jun 2021 12:39:49 -0500 Subject: [PATCH 7/9] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cae7847..2e3d61d 100644 --- a/README.md +++ b/README.md @@ -35,4 +35,5 @@ Requires - [BepInEx 5.4.x](https://github.com/BepInEx/BepInEx/releases) - [Sodalite](https://github.com/H3VR-Modding/Sodalite/releases) -Extract the BetterHands `.zip` into the BepInEx plugins folder + +Download and open [BetterHands.zip](https://github.com/Maiq-The-Dude/BetterHands/releases/latest), then drag `BetterHands.dll` within into the `h3vr/bepinex/plugins/ directory` From fc45cea2c4737ea124dfd3322b20994c8b588c4d Mon Sep 17 00:00:00 2001 From: M'aiq Date: Tue, 15 Jun 2021 12:40:39 -0500 Subject: [PATCH 8/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e3d61d..1c966c2 100644 --- a/README.md +++ b/README.md @@ -36,4 +36,4 @@ Requires - [Sodalite](https://github.com/H3VR-Modding/Sodalite/releases) -Download and open [BetterHands.zip](https://github.com/Maiq-The-Dude/BetterHands/releases/latest), then drag `BetterHands.dll` within into the `h3vr/bepinex/plugins/ directory` +Download and open [BetterHands.zip](https://github.com/Maiq-The-Dude/BetterHands/releases/latest), then drag `BetterHands.dll` within into the `h3vr/bepinex/plugins/` directory From 8d86ffd79a0be3dfa2cdee02126d270466c5e07c Mon Sep 17 00:00:00 2001 From: M'aiq Date: Tue, 15 Jun 2021 15:16:36 -0500 Subject: [PATCH 9/9] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1c966c2..164767d 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,10 @@ Mag palming allows you to carry two small sized magazines in one hand. To do thi ## Manual Installation Requires -- [BepInEx 5.4.x](https://github.com/BepInEx/BepInEx/releases) -- [Sodalite](https://github.com/H3VR-Modding/Sodalite/releases) +- [BepInEx 5.4.x](https://github.com/BepInEx/BepInEx) +- [BepInEx.Monomod.Loader](https://github.com/BepInEx/BepInEx.MonoMod.Loader) +- [BepInEx.Monomod.HookGenPatcher](https://github.com/harbingerofme/Bepinex.Monomod.HookGenPatcher) +- [Sodalite](https://github.com/H3VR-Modding/Sodalite) Download and open [BetterHands.zip](https://github.com/Maiq-The-Dude/BetterHands/releases/latest), then drag `BetterHands.dll` within into the `h3vr/bepinex/plugins/` directory