diff --git a/CHANGELOG.md b/CHANGELOG.md index cb63c66..8961d5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +**1.0.4** +* Allow Opening Loot Chests In Spectator Mode + **1.0.3** * Update Dispenser Behavior diff --git a/README.md b/README.md index aeb91b7..d185af6 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Suggest more tweaks in the issue tracker! * Instant Kill In Creative Mode * Throwable Slimeballs * Throwable Spawn Eggs +* Open Loot Chests In Spectator Mode ## Changelog [View Changelog](CHANGELOG.md) diff --git a/gradle.properties b/gradle.properties index 14dca4c..c489de4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ org.gradle.jvmargs = -Xmx1G fabric_loader_version = 0.7.8+build.189 # Mod Properties - mod_version = 1.0.3 + mod_version = 1.0.4 maven_group = com.thebrokenrail archives_base_name = slightlyvanilla diff --git a/src/main/java/com/thebrokenrail/slightlyvanilla/ModConfig.java b/src/main/java/com/thebrokenrail/slightlyvanilla/ModConfig.java index 7bfb2dd..fd710a7 100644 --- a/src/main/java/com/thebrokenrail/slightlyvanilla/ModConfig.java +++ b/src/main/java/com/thebrokenrail/slightlyvanilla/ModConfig.java @@ -12,6 +12,7 @@ public class ModConfig implements ConfigData { public ThrowableOption throwableSlimeballs = new ThrowableOption(true, true); @ConfigEntry.Gui.CollapsibleObject(startExpanded = true) public ThrowableOption throwableSpawnEggs = new ThrowableOption(true, false); + public boolean openLootChestsInSpectatorMode = true; public static class ThrowableOption { public boolean player; diff --git a/src/main/java/com/thebrokenrail/slightlyvanilla/mixin/MixinItem.java b/src/main/java/com/thebrokenrail/slightlyvanilla/mixin/MixinItem.java index d34e58a..5620d82 100644 --- a/src/main/java/com/thebrokenrail/slightlyvanilla/mixin/MixinItem.java +++ b/src/main/java/com/thebrokenrail/slightlyvanilla/mixin/MixinItem.java @@ -2,6 +2,7 @@ package com.thebrokenrail.slightlyvanilla.mixin; import com.thebrokenrail.slightlyvanilla.SlightlyVanilla; import com.thebrokenrail.slightlyvanilla.entity.SlimeballEntity; +import net.minecraft.block.ChestBlock; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/thebrokenrail/slightlyvanilla/mixin/MixinLootableContainerBlockEntity.java b/src/main/java/com/thebrokenrail/slightlyvanilla/mixin/MixinLootableContainerBlockEntity.java new file mode 100644 index 0000000..15269cf --- /dev/null +++ b/src/main/java/com/thebrokenrail/slightlyvanilla/mixin/MixinLootableContainerBlockEntity.java @@ -0,0 +1,26 @@ +package com.thebrokenrail.slightlyvanilla.mixin; + +import com.thebrokenrail.slightlyvanilla.SlightlyVanilla; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.LockableContainerBlockEntity; +import net.minecraft.block.entity.LootableContainerBlockEntity; +import net.minecraft.entity.player.PlayerEntity; +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.CallbackInfoReturnable; + +@SuppressWarnings("unused") +@Mixin(LootableContainerBlockEntity.class) +public abstract class MixinLootableContainerBlockEntity extends LockableContainerBlockEntity { + protected MixinLootableContainerBlockEntity(BlockEntityType blockEntityType) { + super(blockEntityType); + } + + @Inject(at = @At("HEAD"), method = "checkUnlocked", cancellable = true) + public void checkUnlocked(PlayerEntity player, CallbackInfoReturnable info) { + if (SlightlyVanilla.getConfig().openLootChestsInSpectatorMode) { + info.setReturnValue(super.checkUnlocked(player)); + } + } +} diff --git a/src/main/resources/assets/slightlyvanilla/lang/en_us.json b/src/main/resources/assets/slightlyvanilla/lang/en_us.json index 1561e27..99e7ecc 100644 --- a/src/main/resources/assets/slightlyvanilla/lang/en_us.json +++ b/src/main/resources/assets/slightlyvanilla/lang/en_us.json @@ -8,6 +8,7 @@ "text.autoconfig.slightlyvanilla.option.throwableSpawnEggs": "Throwable Spawn Eggs", "text.autoconfig.slightlyvanilla.option.throwableSpawnEggs.player": "Player", "text.autoconfig.slightlyvanilla.option.throwableSpawnEggs.dispenser": "Dispenser", + "text.autoconfig.slightlyvanilla.option.openLootChestsInSpectatorMode": "Open Loot Chests In Spectator Mode", "entity.slightlyvanilla.slimeball": "Slimeball", "entity.slightlyvanilla.spawn_egg": "Spawn Egg" } \ No newline at end of file diff --git a/src/main/resources/slightlyvanilla.mixins.json b/src/main/resources/slightlyvanilla.mixins.json index bcc16ef..7cd439e 100644 --- a/src/main/resources/slightlyvanilla.mixins.json +++ b/src/main/resources/slightlyvanilla.mixins.json @@ -9,7 +9,8 @@ "MixinRespawnAnchorBlock", "MixinPlayerEntity", "MixinItem", - "MixinSpawnEggItem" + "MixinSpawnEggItem", + "MixinLootableContainerBlockEntity" ], "injectors": { "defaultRequire": 1