From 121c2cbcac471bb90d16f83e070ddb0176e7e441 Mon Sep 17 00:00:00 2001 From: Michael Hillcox Date: Thu, 3 Dec 2020 18:13:11 +0000 Subject: [PATCH] Drill, it's container and it's screen (blank atm) --- .../actuallyadditions/client/ClientSetup.java | 15 +++++++ .../client/screens/DrillScreen.java | 25 +++++++++++ .../client/screens/package-info.java | 7 ++++ .../common/ActuallyAdditions.java | 5 ++- .../common/config/ItemConfig.java | 5 +++ .../common/container/ActuallyContainers.java | 15 +++++++ .../common/container/DrillContainer.java | 26 ++++++++++++ .../common/items/ActuallyItems.java | 32 +++++++-------- .../common/items/useables/DrillItem.java | 41 +++++++++++++++++++ 9 files changed, 154 insertions(+), 17 deletions(-) create mode 100644 src/main/java/de/ellpeck/actuallyadditions/client/ClientSetup.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/client/screens/DrillScreen.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/client/screens/package-info.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/common/container/ActuallyContainers.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/common/container/DrillContainer.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/common/items/useables/DrillItem.java diff --git a/src/main/java/de/ellpeck/actuallyadditions/client/ClientSetup.java b/src/main/java/de/ellpeck/actuallyadditions/client/ClientSetup.java new file mode 100644 index 000000000..655804935 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/client/ClientSetup.java @@ -0,0 +1,15 @@ +package de.ellpeck.actuallyadditions.client; + +import de.ellpeck.actuallyadditions.client.screens.DrillScreen; +import de.ellpeck.actuallyadditions.common.container.ActuallyContainers; +import net.minecraft.client.gui.ScreenManager; + +public class ClientSetup { + public static void setup() { + setupScreens(); + } + + private static void setupScreens() { + ScreenManager.registerFactory(ActuallyContainers.DRILL_CONTAINER.get(), DrillScreen::new); + } +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/client/screens/DrillScreen.java b/src/main/java/de/ellpeck/actuallyadditions/client/screens/DrillScreen.java new file mode 100644 index 000000000..0acfc140b --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/client/screens/DrillScreen.java @@ -0,0 +1,25 @@ +package de.ellpeck.actuallyadditions.client.screens; + +import com.mojang.blaze3d.matrix.MatrixStack; +import de.ellpeck.actuallyadditions.common.container.DrillContainer; +import net.minecraft.client.gui.screen.inventory.ContainerScreen; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.util.text.ITextComponent; + +public class DrillScreen extends ContainerScreen { + public DrillScreen(DrillContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) { + super(screenContainer, inv, titleIn); + } + + @Override + protected void drawGuiContainerBackgroundLayer(MatrixStack matrixStack, float partialTicks, int x, int y) { + + } + + @Override + public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { + super.render(matrixStack, mouseX, mouseY, partialTicks); + + this.renderBackground(matrixStack); + } +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/client/screens/package-info.java b/src/main/java/de/ellpeck/actuallyadditions/client/screens/package-info.java new file mode 100644 index 000000000..27618d7ae --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/client/screens/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package de.ellpeck.actuallyadditions.client.screens; + +import mcp.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/de/ellpeck/actuallyadditions/common/ActuallyAdditions.java b/src/main/java/de/ellpeck/actuallyadditions/common/ActuallyAdditions.java index afec060c8..0870c3ced 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/common/ActuallyAdditions.java +++ b/src/main/java/de/ellpeck/actuallyadditions/common/ActuallyAdditions.java @@ -1,7 +1,9 @@ package de.ellpeck.actuallyadditions.common; +import de.ellpeck.actuallyadditions.client.ClientSetup; import de.ellpeck.actuallyadditions.common.blocks.ActuallyBlocks; import de.ellpeck.actuallyadditions.common.config.Config; +import de.ellpeck.actuallyadditions.common.container.ActuallyContainers; import de.ellpeck.actuallyadditions.common.items.ActuallyItems; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; @@ -38,6 +40,7 @@ public class ActuallyAdditions { ActuallyBlocks.BLOCKS.register(eventBus); ActuallyItems.ITEMS.register(eventBus); + ActuallyContainers.CONTAINERS.register(eventBus); eventBus.addListener(this::setup); eventBus.addListener(this::clientSetup); @@ -49,6 +52,6 @@ public class ActuallyAdditions { } private void clientSetup(FMLClientSetupEvent event) { - + ClientSetup.setup(); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/common/config/ItemConfig.java b/src/main/java/de/ellpeck/actuallyadditions/common/config/ItemConfig.java index 02be6bd58..3b90322f7 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/common/config/ItemConfig.java +++ b/src/main/java/de/ellpeck/actuallyadditions/common/config/ItemConfig.java @@ -6,6 +6,7 @@ import static net.minecraftforge.common.ForgeConfigSpec.IntValue; public class ItemConfig { public final IntValue teleportStaffCost; public final IntValue teleportStaffMaxEnergy; + public final IntValue drillMaxEnergy; public ItemConfig() { COMMON_BUILDER.comment("Item Config Options").push("items"); @@ -20,5 +21,9 @@ public class ItemConfig { teleportStaffMaxEnergy = COMMON_BUILDER .comment("The max amount of Crystal Flux stored in the Teleport Staff") .defineInRange("Teleport Staff Max Energy", 250000, 0, 1000000); + + drillMaxEnergy = COMMON_BUILDER + .comment("The max energy amount for the drill") + .defineInRange("Drill Max Energy", 250000, 0, 1000000); } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/common/container/ActuallyContainers.java b/src/main/java/de/ellpeck/actuallyadditions/common/container/ActuallyContainers.java new file mode 100644 index 000000000..c5985acb9 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/common/container/ActuallyContainers.java @@ -0,0 +1,15 @@ +package de.ellpeck.actuallyadditions.common.container; + +import de.ellpeck.actuallyadditions.common.ActuallyAdditions; +import net.minecraft.inventory.container.ContainerType; +import net.minecraftforge.common.extensions.IForgeContainerType; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +public final class ActuallyContainers { + public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, ActuallyAdditions.MOD_ID); + + public static final RegistryObject> DRILL_CONTAINER + = CONTAINERS.register("drill_container", () -> IForgeContainerType.create(DrillContainer::new)); +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/common/container/DrillContainer.java b/src/main/java/de/ellpeck/actuallyadditions/common/container/DrillContainer.java new file mode 100644 index 000000000..015fcf3b9 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/common/container/DrillContainer.java @@ -0,0 +1,26 @@ +package de.ellpeck.actuallyadditions.common.container; + +import de.ellpeck.actuallyadditions.common.items.useables.DrillItem; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.container.Container; +import net.minecraft.network.PacketBuffer; + +public class DrillContainer extends Container { + private PlayerInventory inv; + + public DrillContainer(int windowId, PlayerInventory inv, PacketBuffer data) { + this(windowId, inv); + } + + public DrillContainer(int windowId, PlayerInventory inv) { + super(ActuallyContainers.DRILL_CONTAINER.get(), windowId); + this.inv = inv; + } + + @Override + public boolean canInteractWith(PlayerEntity playerIn) { + // Close if the player is not holding the item + return playerIn.getHeldItemMainhand().getItem() instanceof DrillItem; + } +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/common/items/ActuallyItems.java b/src/main/java/de/ellpeck/actuallyadditions/common/items/ActuallyItems.java index b504d56e8..1e712952e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/common/items/ActuallyItems.java +++ b/src/main/java/de/ellpeck/actuallyadditions/common/items/ActuallyItems.java @@ -112,22 +112,22 @@ public final class ActuallyItems { public static final RegistryObject QUADRUPLE_BATTERY = ITEMS.register("quadruple_battery", () -> new BatteryItem(() -> 1000000, 30000)); public static final RegistryObject QUINTUPLE_BATTERY = ITEMS.register("quintuple_battery", () -> new BatteryItem(() -> 2000000, 100000)); - public static final RegistryObject DRILL_MAIN = ITEMS.register("drill_light_blue", basicItem()); - public static final RegistryObject DRILL_BLACK = ITEMS.register("drill_black", basicItem()); - public static final RegistryObject DRILL_BLUE = ITEMS.register("drill_blue", basicItem()); - public static final RegistryObject DRILL_BROWN = ITEMS.register("drill_brown", basicItem()); - public static final RegistryObject DRILL_CYAN = ITEMS.register("drill_cyan", basicItem()); - public static final RegistryObject DRILL_GRAY = ITEMS.register("drill_gray", basicItem()); - public static final RegistryObject DRILL_GREEN = ITEMS.register("drill_green", basicItem()); - public static final RegistryObject DRILL_LIGHT_GRAY = ITEMS.register("drill_light_gray", basicItem()); - public static final RegistryObject DRILL_LIME = ITEMS.register("drill_lime", basicItem()); - public static final RegistryObject DRILL_MAGENTA = ITEMS.register("drill_magenta", basicItem()); - public static final RegistryObject DRILL_ORANGE = ITEMS.register("drill_orange", basicItem()); - public static final RegistryObject DRILL_PINK = ITEMS.register("drill_pink", basicItem()); - public static final RegistryObject DRILL_PURPLE = ITEMS.register("drill_purple", basicItem()); - public static final RegistryObject DRILL_RED = ITEMS.register("drill_red", basicItem()); - public static final RegistryObject DRILL_WHITE = ITEMS.register("drill_white", basicItem()); - public static final RegistryObject DRILL_YELLOW = ITEMS.register("drill_yellow", basicItem()); + public static final RegistryObject DRILL_MAIN = ITEMS.register("drill_light_blue", DrillItem::new); + public static final RegistryObject DRILL_BLACK = ITEMS.register("drill_black", DrillItem::new); + public static final RegistryObject DRILL_BLUE = ITEMS.register("drill_blue", DrillItem::new); + public static final RegistryObject DRILL_BROWN = ITEMS.register("drill_brown", DrillItem::new); + public static final RegistryObject DRILL_CYAN = ITEMS.register("drill_cyan", DrillItem::new); + public static final RegistryObject DRILL_GRAY = ITEMS.register("drill_gray", DrillItem::new); + public static final RegistryObject DRILL_GREEN = ITEMS.register("drill_green", DrillItem::new); + public static final RegistryObject DRILL_LIGHT_GRAY = ITEMS.register("drill_light_gray", DrillItem::new); + public static final RegistryObject DRILL_LIME = ITEMS.register("drill_lime", DrillItem::new); + public static final RegistryObject DRILL_MAGENTA = ITEMS.register("drill_magenta", DrillItem::new); + public static final RegistryObject DRILL_ORANGE = ITEMS.register("drill_orange", DrillItem::new); + public static final RegistryObject DRILL_PINK = ITEMS.register("drill_pink", DrillItem::new); + public static final RegistryObject DRILL_PURPLE = ITEMS.register("drill_purple", DrillItem::new); + public static final RegistryObject DRILL_RED = ITEMS.register("drill_red", DrillItem::new); + public static final RegistryObject DRILL_WHITE = ITEMS.register("drill_white", DrillItem::new); + public static final RegistryObject DRILL_YELLOW = ITEMS.register("drill_yellow", DrillItem::new); public static final RegistryObject DRILL_SPEED_AUGMENT_I = ITEMS.register("drill_speed_augment_i", basicItem()); public static final RegistryObject DRILL_SPEED_AUGMENT_II = ITEMS.register("drill_speed_augment_ii", basicItem()); public static final RegistryObject DRILL_SPEED_AUGMENT_III = ITEMS.register("drill_speed_augment_iii", basicItem()); diff --git a/src/main/java/de/ellpeck/actuallyadditions/common/items/useables/DrillItem.java b/src/main/java/de/ellpeck/actuallyadditions/common/items/useables/DrillItem.java new file mode 100644 index 000000000..bc44e0a8e --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/common/items/useables/DrillItem.java @@ -0,0 +1,41 @@ +package de.ellpeck.actuallyadditions.common.items.useables; + +import de.ellpeck.actuallyadditions.common.config.Config; +import de.ellpeck.actuallyadditions.common.container.DrillContainer; +import de.ellpeck.actuallyadditions.common.items.CrystalFluxItem; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.inventory.container.SimpleNamedContainerProvider; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.world.World; +import net.minecraftforge.common.ToolType; +import net.minecraftforge.fml.network.NetworkHooks; + +public class DrillItem extends CrystalFluxItem { + public DrillItem() { + super( + baseProps() + .maxDamage(0) + .setNoRepair() + .addToolType(ToolType.PICKAXE, 4) + .addToolType(ToolType.SHOVEL, 4), + Config.ITEM_CONFIG.drillMaxEnergy::get, + 1000 + ); + } + + @Override + public ActionResult onItemRightClick(World worldIn, PlayerEntity player, Hand handIn) { + if (player.isSneaking() && !worldIn.isRemote && handIn == Hand.MAIN_HAND) { + NetworkHooks.openGui((ServerPlayerEntity) player, new SimpleNamedContainerProvider( + (windowId, playerInv, playerEntity) -> new DrillContainer(windowId, playerInv), + StringTextComponent.EMPTY + )); + } + + return super.onItemRightClick(worldIn, player, handIn); + } +}