diff options
| author | shedaniel <daniel@shedaniel.me> | 2024-07-20 18:39:18 +0900 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2024-07-20 18:40:38 +0900 |
| commit | 2d7389aa03f9a6bad7b5e7b81456acb5f9d358e9 (patch) | |
| tree | 436e12342250e26296166479c33902cd8e1ff713 | |
| parent | deb29135ec13b735f18695deb6ffccc49a74c9db (diff) | |
| download | RoughlyEnoughItems-4.x.tar.gz RoughlyEnoughItems-4.x.tar.bz2 RoughlyEnoughItems-4.x.zip | |
Check slots before modification4.x
| -rw-r--r-- | .github/workflows/curseforge.yml | 10 | ||||
| -rw-r--r-- | .github/workflows/gradle.yml | 4 | ||||
| -rwxr-xr-x | build.gradle | 18 | ||||
| -rw-r--r-- | gradle.properties | 2 | ||||
| -rwxr-xr-x | gradle/wrapper/gradle-wrapper.properties | 2 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/server/DumpHandler.java | 2 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/server/GridCleanHandler.java | 4 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java | 15 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/server/SlotStackAccessor.java | 11 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/server/StackAccessor.java | 9 |
10 files changed, 58 insertions, 19 deletions
diff --git a/.github/workflows/curseforge.yml b/.github/workflows/curseforge.yml index 9b3bb16bf..40ce36ec3 100644 --- a/.github/workflows/curseforge.yml +++ b/.github/workflows/curseforge.yml @@ -13,17 +13,19 @@ jobs: if: "!contains(github.event.head_commit.message, 'ci skip')" steps: - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 16 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 16 - name: Clean Gradle run: ./gradlew clean --refresh-dependencies --stacktrace env: danielshe_curse_api_key: ${{ secrets.CF_API_KEY }} BRANCH_NAME: ${{ github.ref }} + MAVEN_PASS: ${{ secrets.MAVEN_PASS }} - name: Upload to CurseForge - run: ./gradlew build releaseOnCf --stacktrace + run: ./gradlew build releaseOnCf publish --stacktrace env: danielshe_curse_api_key: ${{ secrets.CF_API_KEY }} - BRANCH_NAME: ${{ github.ref }}
\ No newline at end of file + BRANCH_NAME: ${{ github.ref }} + MAVEN_PASS: ${{ secrets.MAVEN_PASS }}
\ No newline at end of file diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index c0619b581..d0eee4d57 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -7,9 +7,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 16 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 16 - name: Build with Gradle run: ./gradlew clean build --refresh-dependencies --stacktrace diff --git a/build.gradle b/build.gradle index 00c50677d..dd89ce1d1 100755 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,9 @@ plugins { - id("fabric-loom") version "0.4-SNAPSHOT" + id("fabric-loom") version "0.9-SNAPSHOT" id("maven-publish") id("java") id("java-library") - id("net.minecrell.licenser") version("0.4.1") + id("org.cadixdev.licenser") version("0.6.1") id("com.matthewprenger.cursegradle") version("1.4.0") id("net.corda.plugins.jar-filter") version("5.0.8") apply false } @@ -29,8 +29,8 @@ license { } repositories { - maven { url "https://dl.bintray.com/shedaniel/legacy-yarn-updated" } - maven { url "https://dl.bintray.com/shedaniel/shedaniel-mods" } + maven { url "https://maven.terraformersmc.com/" } + maven { url "https://maven.shedaniel.me/" } } jar { @@ -90,7 +90,7 @@ dependencies { } } } - configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.each eachDep + configurations.compileClasspath.resolvedConfiguration.firstLevelModuleDependencies.each eachDep configurations.runtimeClasspath.resolvedConfiguration.firstLevelModuleDependencies.each eachDep } } @@ -214,12 +214,12 @@ publishing { } repositories { - if (project.hasProperty('danielshe_pass')) { + if (System.getenv("MAVEN_PASS") != null) { maven { - url = "http://deploy.modmuss50.me/" + url = "https://deploy.shedaniel.me/" credentials { - username = "danielshe" - password = project.getProperty('danielshe_pass') + username = "shedaniel" + password = System.getenv("MAVEN_PASS") } } } diff --git a/gradle.properties b/gradle.properties index fa5bd6c22..db05adf8d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx3G -mod_version=4.12.1 +mod_version=4.12.2 supported_version=1.16.x minecraft_version=1.16.1 yarn_version=1.16.1+build.4+legacy.20w09a+build.8 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7ca6abcf2..3bba85c78 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.4-all.zip diff --git a/src/main/java/me/shedaniel/rei/server/DumpHandler.java b/src/main/java/me/shedaniel/rei/server/DumpHandler.java index c5e04e12b..8f7a2d94d 100644 --- a/src/main/java/me/shedaniel/rei/server/DumpHandler.java +++ b/src/main/java/me/shedaniel/rei/server/DumpHandler.java @@ -34,7 +34,7 @@ public interface DumpHandler<T extends Container> { static StackAccessor getOccupiedSlotWithRoomForStack(ItemStack stack, List<StackAccessor> inventoryStacks) { for (StackAccessor inventoryStack : inventoryStacks) { - if (canStackAddMore(inventoryStack.getItemStack(), stack)) { + if (canStackAddMore(inventoryStack.getItemStack(), stack) && inventoryStack.canPlace(stack)) { return inventoryStack; } } diff --git a/src/main/java/me/shedaniel/rei/server/GridCleanHandler.java b/src/main/java/me/shedaniel/rei/server/GridCleanHandler.java index 557675533..4eeb95b79 100644 --- a/src/main/java/me/shedaniel/rei/server/GridCleanHandler.java +++ b/src/main/java/me/shedaniel/rei/server/GridCleanHandler.java @@ -38,6 +38,10 @@ public interface GridCleanHandler<T extends Container> { DumpHandler<T> dumpHandler = context.getContainerInfo().getDumpHandler(); ItemStack stackToReturn = stackAccessor.getItemStack(); if (!stackToReturn.isEmpty()) { + if (!stackAccessor.allowModification(context.getPlayerEntity())) { + error("rei.rei.no.slot.in.inv"); + } + for (; stackToReturn.getCount() > 0; stackAccessor.takeStack(1)) { ItemStack stackToInsert = stackToReturn.copy(); stackToInsert.setCount(1); diff --git a/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java b/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java index 4447256e2..ed7ffa2d9 100644 --- a/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java +++ b/src/main/java/me/shedaniel/rei/server/InputSlotCrafter.java @@ -106,6 +106,10 @@ public class InputSlotCrafter<C extends Inventory> implements RecipeGridAligner< } takenStack.setCount(1); + if (!slot.canPlace(takenStack)) { + return; + } + if (slot.getItemStack().isEmpty()) { slot.setItemStack(takenStack); } else { @@ -158,13 +162,22 @@ public class InputSlotCrafter<C extends Inventory> implements RecipeGridAligner< } public int method_7371(ItemStack itemStack) { + boolean rejectedModification = false; for (int i = 0; i < inventoryStacks.size(); i++) { ItemStack itemStack1 = this.inventoryStacks.get(i).getItemStack(); if (!itemStack1.isEmpty() && areItemsEqual(itemStack, itemStack1) && !itemStack1.isDamaged() && !itemStack1.hasEnchantments() && !itemStack1.hasCustomName()) { - return i; + if (!this.inventoryStacks.get(i).allowModification(player)) { + rejectedModification = true; + } else { + return i; + } } } + if (rejectedModification) { + throw new IllegalStateException("Unable to take item from inventory due to slot not allowing modification! Item requested: " + itemStack); + } + return -1; } diff --git a/src/main/java/me/shedaniel/rei/server/SlotStackAccessor.java b/src/main/java/me/shedaniel/rei/server/SlotStackAccessor.java index 46b4d7b8b..f0d0e361e 100644 --- a/src/main/java/me/shedaniel/rei/server/SlotStackAccessor.java +++ b/src/main/java/me/shedaniel/rei/server/SlotStackAccessor.java @@ -23,6 +23,7 @@ package me.shedaniel.rei.server; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; @@ -47,4 +48,14 @@ public class SlotStackAccessor implements StackAccessor { public ItemStack takeStack(int amount) { return slot.takeStack(amount); } + + @Override + public boolean allowModification(PlayerEntity player) { + return slot.canTakeItems(player); + } + + @Override + public boolean canPlace(ItemStack stack) { + return slot.canInsert(stack); + } } diff --git a/src/main/java/me/shedaniel/rei/server/StackAccessor.java b/src/main/java/me/shedaniel/rei/server/StackAccessor.java index 65b722a9e..278a75baa 100644 --- a/src/main/java/me/shedaniel/rei/server/StackAccessor.java +++ b/src/main/java/me/shedaniel/rei/server/StackAccessor.java @@ -23,6 +23,7 @@ package me.shedaniel.rei.server; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; public interface StackAccessor { @@ -31,4 +32,12 @@ public interface StackAccessor { void setItemStack(ItemStack stack); ItemStack takeStack(int amount); + + default boolean allowModification(PlayerEntity player) { + return true; + } + + default boolean canPlace(ItemStack stack) { + return true; + } } |
