diff --git a/build.gradle b/build.gradle index f307089..6fa43f7 100644 --- a/build.gradle +++ b/build.gradle @@ -34,6 +34,11 @@ repositories { url "https://maven.shedaniel.me/" } + // Quick Shulker + maven { + url "https://maven.kyrptonaught.dev" + } + // Shulker Box Tooltip maven { url "https://maven.misterpemodder.com/libs-release" @@ -72,6 +77,11 @@ dependencies { // Reinforced Chests modImplementation "atonkish.reinfchest:reinforced-chests:${project.reinforced_chests_version}" + // Quick Shulker + modImplementation "net.kyrptonaught:quickshulker:${project.quick_shulker_version}" + // Quick Shulker deps + modImplementation "net.kyrptonaught:shulkerutils:${project.shulkerutils_version}" + // Shulker Box Tooltip modImplementation "com.misterpemodder:shulkerboxtooltip-fabric:${project.shulker_box_tooltip_version}" } @@ -147,6 +157,7 @@ curseforge { embeddedLibrary "cloth-config" optionalDependency "modmenu" optionalDependency "shulkerboxtooltip" + optionalDependency "quick-shulker" optionalDependency "reinforced-chests" } } @@ -171,6 +182,7 @@ modrinth { embedded.project "cloth-config" optional.project "modmenu" optional.project "shulkerboxtooltip" + optional.project "quickshulker" optional.project "reinforced-chests" } } diff --git a/gradle.properties b/gradle.properties index 636405f..08d9a0f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,21 +4,24 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop - minecraft_version=1.20 - yarn_mappings=1.20+build.1 + minecraft_version=1.20.1 + yarn_mappings=1.20.1+build.2 loader_version=0.14.21 # Mod Properties - mod_version=2.4.0+1.20 + mod_version=2.4.1+1.20 mod_id=reinfshulker maven_group=atonkish.reinfshulker archives_base_name=reinforced-shulker-boxes # Dependencies - fabric_version=0.83.0+1.20 - reinforced_core_version=3.1.1+1.20 - reinforced_chests_version=2.4.0+1.20 - shulker_box_tooltip_version=4.0.1+1.20 + fabric_version=0.83.1+1.20.1 + reinforced_core_version=3.1.2+1.20 + reinforced_chests_version=2.4.2+1.20 + quick_shulker_version=1.4.0-1.20 + shulker_box_tooltip_version=4.0.3+1.20 + # Quick Shulker deps + shulkerutils_version=1.0.4-1.19 # Distribution platform curseforge_id=529874 diff --git a/src/main/java/atonkish/reinfshulker/integration/quickshulker/QuickShulker.java b/src/main/java/atonkish/reinfshulker/integration/quickshulker/QuickShulker.java new file mode 100644 index 0000000..4955844 --- /dev/null +++ b/src/main/java/atonkish/reinfshulker/integration/quickshulker/QuickShulker.java @@ -0,0 +1,52 @@ +package atonkish.reinfshulker.integration.quickshulker; + +import java.util.function.BiConsumer; + +import net.kyrptonaught.quickshulker.api.ItemStackInventory; +import net.kyrptonaught.quickshulker.api.QuickOpenableRegistry; +import net.kyrptonaught.quickshulker.api.RegisterQuickShulker; + +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.ScreenHandlerFactory; +import net.minecraft.screen.SimpleNamedScreenHandlerFactory; +import net.minecraft.text.Text; + +import atonkish.reinfcore.screen.ReinforcedStorageScreenHandler; +import atonkish.reinfcore.util.ReinforcingMaterial; +import atonkish.reinfshulker.block.ReinforcedShulkerBoxBlock; +import atonkish.reinfshulker.block.entity.ModBlockEntityType; + +public class QuickShulker implements RegisterQuickShulker { + private static BiConsumer REINFORCED_SHULKER_BOX_CONSUMER; + + @Override + public void registerProviders() { + new QuickOpenableRegistry.Builder() + .setItem(ReinforcedShulkerBoxBlock.class) + .supportsBundleing(true) + .setOpenAction(REINFORCED_SHULKER_BOX_CONSUMER) + .register(); + } + + static { + REINFORCED_SHULKER_BOX_CONSUMER = (PlayerEntity player, ItemStack stack) -> { + ReinforcedShulkerBoxBlock block = (ReinforcedShulkerBoxBlock) ((BlockItem) stack.getItem()).getBlock(); + ReinforcingMaterial material = block.getMaterial(); + ItemStackInventory inventory = new ItemStackInventory(stack, material.getSize()); + String namespace = BlockEntityType.getId(ModBlockEntityType.REINFORCED_SHULKER_BOX_MAP.get(material)) + .getNamespace(); + + ScreenHandlerFactory screenHandlerFactory = (int syncId, PlayerInventory playerInventory, + PlayerEntity playerEntity) -> ReinforcedStorageScreenHandler.createShulkerBoxScreen(material, + syncId, playerInventory, inventory); + Text text = stack.hasCustomName() ? stack.getName() + : Text.translatable("container." + namespace + "." + material.getName() + "ShulkerBox"); + + player.openHandledScreen(new SimpleNamedScreenHandlerFactory(screenHandlerFactory, text)); + }; + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index fb1d717..f33f998 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -22,6 +22,9 @@ "reinfcoreclient": [ "atonkish.reinfshulker.ReinforcedShulkerBoxesClientMod" ], + "quickshulker": [ + "atonkish.reinfshulker.integration.quickshulker.QuickShulker" + ], "shulkerboxtooltip": [ "atonkish.reinfshulker.integration.shulkerboxtooltip.ShulkerBoxTooltip" ],