From d6966bd75f04d9a45f913bccd125cbae85373bd0 Mon Sep 17 00:00:00 2001 From: Xevion Date: Sat, 6 Jul 2019 18:21:18 -0500 Subject: [PATCH] init commit --- .../net/fabricmc/example/CraftingWand.java | 4 ++ .../fabricmc/example/EverythingOnAStick.java | 11 +++++ .../java/net/fabricmc/example/ExampleMod.java | 14 ------- .../example/WandCraftingTableContainer.java | 4 ++ src/main/java/net/fabricmc/example/Wands.java | 4 ++ .../EverythingOnAStick.java | 11 +++++ .../everythingonastick/RegisterWands.java | 28 +++++++++++++ .../craftingtable/CraftingWandContainer.java | 17 ++++++++ .../craftingtable/CraftingWandItem.java | 34 +++++++++++++++ .../EnchantingTableWandBlockEntity.java | 33 +++++++++++++++ .../EnchantingTableWandItem.java | 4 ++ .../enderchest/EnderchestWandItem.java | 34 +++++++++++++++ .../CustomAbstractFurnaceBlockEntity.java | 4 ++ .../furnace/FurnaceWandBlockEntity.java | 39 ++++++++++++++++++ .../furnace/FurnaceWandItem.java | 26 ++++++++++++ .../assets/everything-on-a-stick/icon.png | Bin 0 -> 3895 bytes .../everything-on-a-stick/lang/en_us.json | 6 +++ src/main/resources/modid.mixins.json | 13 ------ 18 files changed, 259 insertions(+), 27 deletions(-) create mode 100644 src/main/java/net/fabricmc/example/CraftingWand.java create mode 100644 src/main/java/net/fabricmc/example/EverythingOnAStick.java delete mode 100644 src/main/java/net/fabricmc/example/ExampleMod.java create mode 100644 src/main/java/net/fabricmc/example/WandCraftingTableContainer.java create mode 100644 src/main/java/net/fabricmc/example/Wands.java create mode 100644 src/main/java/xevion/everythingonastick/EverythingOnAStick.java create mode 100644 src/main/java/xevion/everythingonastick/RegisterWands.java create mode 100644 src/main/java/xevion/everythingonastick/craftingtable/CraftingWandContainer.java create mode 100644 src/main/java/xevion/everythingonastick/craftingtable/CraftingWandItem.java create mode 100644 src/main/java/xevion/everythingonastick/enchantingtable/EnchantingTableWandBlockEntity.java create mode 100644 src/main/java/xevion/everythingonastick/enchantingtable/EnchantingTableWandItem.java create mode 100644 src/main/java/xevion/everythingonastick/enderchest/EnderchestWandItem.java create mode 100644 src/main/java/xevion/everythingonastick/furnace/CustomAbstractFurnaceBlockEntity.java create mode 100644 src/main/java/xevion/everythingonastick/furnace/FurnaceWandBlockEntity.java create mode 100644 src/main/java/xevion/everythingonastick/furnace/FurnaceWandItem.java create mode 100644 src/main/resources/assets/everything-on-a-stick/icon.png create mode 100644 src/main/resources/assets/everything-on-a-stick/lang/en_us.json delete mode 100644 src/main/resources/modid.mixins.json diff --git a/src/main/java/net/fabricmc/example/CraftingWand.java b/src/main/java/net/fabricmc/example/CraftingWand.java new file mode 100644 index 0000000..30122da --- /dev/null +++ b/src/main/java/net/fabricmc/example/CraftingWand.java @@ -0,0 +1,4 @@ +package net.fabricmc.example; + +public class CraftingWand { +} diff --git a/src/main/java/net/fabricmc/example/EverythingOnAStick.java b/src/main/java/net/fabricmc/example/EverythingOnAStick.java new file mode 100644 index 0000000..ceecdb4 --- /dev/null +++ b/src/main/java/net/fabricmc/example/EverythingOnAStick.java @@ -0,0 +1,11 @@ +package net.fabricmc.example; + +import net.fabricmc.api.ModInitializer; + +public class ExampleMod implements ModInitializer { + @Override + public void onInitialize() { + Wands.register(); + System.out.println("Wand Items Registered"); + } +} diff --git a/src/main/java/net/fabricmc/example/ExampleMod.java b/src/main/java/net/fabricmc/example/ExampleMod.java deleted file mode 100644 index e5ed082..0000000 --- a/src/main/java/net/fabricmc/example/ExampleMod.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.fabricmc.example; - -import net.fabricmc.api.ModInitializer; - -public class ExampleMod implements ModInitializer { - @Override - public void onInitialize() { - // This code runs as soon as Minecraft is in a mod-load-ready state. - // However, some things (like resources) may still be uninitialized. - // Proceed with mild caution. - - System.out.println("Hello Fabric world!"); - } -} diff --git a/src/main/java/net/fabricmc/example/WandCraftingTableContainer.java b/src/main/java/net/fabricmc/example/WandCraftingTableContainer.java new file mode 100644 index 0000000..8770387 --- /dev/null +++ b/src/main/java/net/fabricmc/example/WandCraftingTableContainer.java @@ -0,0 +1,4 @@ +package net.fabricmc.example; + +public class WandCraftingTableContainer { +} diff --git a/src/main/java/net/fabricmc/example/Wands.java b/src/main/java/net/fabricmc/example/Wands.java new file mode 100644 index 0000000..5bf7689 --- /dev/null +++ b/src/main/java/net/fabricmc/example/Wands.java @@ -0,0 +1,4 @@ +package net.fabricmc.example; + +public class Wands { +} diff --git a/src/main/java/xevion/everythingonastick/EverythingOnAStick.java b/src/main/java/xevion/everythingonastick/EverythingOnAStick.java new file mode 100644 index 0000000..9125ccf --- /dev/null +++ b/src/main/java/xevion/everythingonastick/EverythingOnAStick.java @@ -0,0 +1,11 @@ +package xevion.everythingonastick; + +import net.fabricmc.api.ModInitializer; + +public class EverythingOnAStick implements ModInitializer { + @Override + public void onInitialize() { + RegisterWands.register(); + System.out.println("Wand Items Registered"); + } +} diff --git a/src/main/java/xevion/everythingonastick/RegisterWands.java b/src/main/java/xevion/everythingonastick/RegisterWands.java new file mode 100644 index 0000000..5e6b0a3 --- /dev/null +++ b/src/main/java/xevion/everythingonastick/RegisterWands.java @@ -0,0 +1,28 @@ +package xevion.everythingonastick; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroup; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; +import xevion.everythingonastick.craftingtable.CraftingWandItem; +import xevion.everythingonastick.enchantingtable.EnchantingTableWandItem; +import xevion.everythingonastick.enderchest.EnderchestWandItem; +import xevion.everythingonastick.furnace.FurnaceWandItem; + +public class RegisterWands { + static final CraftingWandItem CRAFTING_WAND = new CraftingWandItem(new Item.Settings().group(ItemGroup.TOOLS)); + static final FurnaceWandItem FURNACE_WAND = new FurnaceWandItem(new Item.Settings().group(ItemGroup.TOOLS)); + static final EnderchestWandItem ENDERCHEST_WAND = new EnderchestWandItem(new Item.Settings().group(ItemGroup.TOOLS)); + static final EnchantingTableWandItem ENCHANTING_TABLE_WAND = new EnchantingTableWandItem(new Item.Settings().group(ItemGroup.TOOLS)); + + public static void register() { + register("crafting-table-on-a-stick", CRAFTING_WAND); + register("furnace-on-a-stick", FURNACE_WAND); + register("enderchest-on-a-stick", ENDERCHEST_WAND); + register("enchanting-table-on-a-stick", ENCHANTING_TABLE_WAND); + } + + public static void register(String name, Item item) { + Registry.register(Registry.ITEM, new Identifier("everything-on-a-stick", name), item); + } +} diff --git a/src/main/java/xevion/everythingonastick/craftingtable/CraftingWandContainer.java b/src/main/java/xevion/everythingonastick/craftingtable/CraftingWandContainer.java new file mode 100644 index 0000000..3c591fd --- /dev/null +++ b/src/main/java/xevion/everythingonastick/craftingtable/CraftingWandContainer.java @@ -0,0 +1,17 @@ +package xevion.everythingonastick.craftingtable; + +import net.minecraft.container.BlockContext; +import net.minecraft.container.CraftingTableContainer; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; + +public class CraftingWandContainer extends CraftingTableContainer { + public CraftingWandContainer(int sync_id, PlayerInventory player_inventory, BlockContext block_context) { + super(sync_id, player_inventory, block_context); + } + + @Override + public boolean canUse(PlayerEntity player) { + return true; + } +} diff --git a/src/main/java/xevion/everythingonastick/craftingtable/CraftingWandItem.java b/src/main/java/xevion/everythingonastick/craftingtable/CraftingWandItem.java new file mode 100644 index 0000000..c02af17 --- /dev/null +++ b/src/main/java/xevion/everythingonastick/craftingtable/CraftingWandItem.java @@ -0,0 +1,34 @@ +package xevion.everythingonastick.craftingtable; + +import net.minecraft.client.network.ClientDummyContainerProvider; +import net.minecraft.container.BlockContext; +import net.minecraft.container.NameableContainerProvider; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; +import net.minecraft.text.TranslatableText; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class CraftingWandItem extends Item { + public CraftingWandItem(Settings settings) { + super(settings); + }; + + private static final Text container_title = new TranslatableText("container.crafting", new Object[0]); + + public TypedActionResult use(World world, PlayerEntity player, Hand hand) { + if(!world.isClient()) { + player.openContainer(getProvider(world, player.getBlockPos())); + } + return new TypedActionResult<>(ActionResult.SUCCESS, player.getStackInHand(hand)); + } + + private NameableContainerProvider getProvider(World world, BlockPos blockpos) { + return new ClientDummyContainerProvider((sync_id, player_inventory, player) -> new CraftingWandContainer(sync_id, player_inventory, BlockContext.create(world, blockpos)), container_title); + } +} diff --git a/src/main/java/xevion/everythingonastick/enchantingtable/EnchantingTableWandBlockEntity.java b/src/main/java/xevion/everythingonastick/enchantingtable/EnchantingTableWandBlockEntity.java new file mode 100644 index 0000000..62267c8 --- /dev/null +++ b/src/main/java/xevion/everythingonastick/enchantingtable/EnchantingTableWandBlockEntity.java @@ -0,0 +1,33 @@ +package xevion.everythingonastick.enderchest; + +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.EnchantingTableBlockEntity; +import net.minecraft.client.network.ClientDummyContainerProvider; +import net.minecraft.container.BlockContext; +import net.minecraft.container.EnchantingTableContainer; +import net.minecraft.container.NameableContainerProvider; +import net.minecraft.text.Text; +import net.minecraft.util.Nameable; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class EnderchestWandBlockEntity extends EnchantingTableBlockEntity { + public EnderchestWandBlockEntity() {} + + @Override + public void tick() {} + + + public NameableContainerProvider createContainerProvider(BlockState blockState_1, World world_1, BlockPos blockPos_1) { + if (blockEntity_1 instanceof EnchantingTableBlockEntity) { + Text text_1 = ((Nameable)blockEntity_1).getDisplayName(); + return new ClientDummyContainerProvider((int_1, playerInventory_1, playerEntity_1) -> { + return new EnchantingTableContainer(int_1, playerInventory_1, BlockContext.create(world_1, blockPos_1)); + }, text_1); + } else { + return null; + } + } +} diff --git a/src/main/java/xevion/everythingonastick/enchantingtable/EnchantingTableWandItem.java b/src/main/java/xevion/everythingonastick/enchantingtable/EnchantingTableWandItem.java new file mode 100644 index 0000000..2bf59c2 --- /dev/null +++ b/src/main/java/xevion/everythingonastick/enchantingtable/EnchantingTableWandItem.java @@ -0,0 +1,4 @@ +package xevion.everythingonastick.enchantingtable; + +public class EnchantingTableWandItem { +} diff --git a/src/main/java/xevion/everythingonastick/enderchest/EnderchestWandItem.java b/src/main/java/xevion/everythingonastick/enderchest/EnderchestWandItem.java new file mode 100644 index 0000000..631fb1c --- /dev/null +++ b/src/main/java/xevion/everythingonastick/enderchest/EnderchestWandItem.java @@ -0,0 +1,34 @@ +package xevion.everythingonastick.enderchest; + +import net.minecraft.client.network.ClientDummyContainerProvider; +import net.minecraft.container.BlockContext; +import net.minecraft.container.GenericContainer; +import net.minecraft.container.NameableContainerProvider; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; +import net.minecraft.text.TranslatableText; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import xevion.everythingonastick.craftingtable.WandCraftingTableContainer; + +import static net.minecraft.block.EnderChestBlock.CONTAINER_NAME; + +public class EnderchestWand extends Item { + public EnderchestWand(Settings settings) { + super(settings); + }; + + public TypedActionResult use(World world, PlayerEntity player, Hand hand) { + if(!world.isClient()) { + player.openContainer(new ClientDummyContainerProvider((int_1, playerInventory_1, playerEntity_1x) -> { + return GenericContainer.createGeneric9x3(int_1, playerInventory_1, player.getEnderChestInventory()); + }, CONTAINER_NAME)); + } + return new TypedActionResult<>(ActionResult.SUCCESS, player.getStackInHand(hand)); + } +} diff --git a/src/main/java/xevion/everythingonastick/furnace/CustomAbstractFurnaceBlockEntity.java b/src/main/java/xevion/everythingonastick/furnace/CustomAbstractFurnaceBlockEntity.java new file mode 100644 index 0000000..0a5b43d --- /dev/null +++ b/src/main/java/xevion/everythingonastick/furnace/CustomAbstractFurnaceBlockEntity.java @@ -0,0 +1,4 @@ +package xevion.everythingonastick.furnace; + +public class CustomAbstractFurnaceBlockEntity { +} diff --git a/src/main/java/xevion/everythingonastick/furnace/FurnaceWandBlockEntity.java b/src/main/java/xevion/everythingonastick/furnace/FurnaceWandBlockEntity.java new file mode 100644 index 0000000..65b8816 --- /dev/null +++ b/src/main/java/xevion/everythingonastick/furnace/FurnaceWandBlockEntity.java @@ -0,0 +1,39 @@ +package xevion.everythingonastick.furnace; + +import net.minecraft.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.container.Container; +import net.minecraft.container.FurnaceContainer; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.recipe.RecipeType; +import net.minecraft.text.Text; +import net.minecraft.text.TranslatableText; + +public class WandFurnaceBlockEntity extends AbstractFurnaceBlockEntity { + public WandFurnaceBlockEntity() {super(BlockEntityType.FURNACE, RecipeType.SMELTING); } + + public Text getContainerName() { + return new TranslatableText("container.furnacewand", new Object[0]); + } + + protected Container createContainer(int int_1, PlayerInventory playerInventory_1) { + return new FurnaceContainer(int_1, playerInventory_1, this, this.propertyDelegate); + } + + public boolean canPlayerUseInv(PlayerEntity player) { + return true; + } +// +// public int[] getInvAvailableSlots(Direction direction_1) { +// return new int[]{}; +// } +// +// public boolean canInsertInvStack(int int_1, ItemStack itemStack_1, @Nullable Direction direction_1) { +// return false; +// } +// +// public boolean canExtractInvStack(int int_1, ItemStack itemStack_1, Direction direction_1) { +// return false; +// } +} diff --git a/src/main/java/xevion/everythingonastick/furnace/FurnaceWandItem.java b/src/main/java/xevion/everythingonastick/furnace/FurnaceWandItem.java new file mode 100644 index 0000000..6292725 --- /dev/null +++ b/src/main/java/xevion/everythingonastick/furnace/FurnaceWandItem.java @@ -0,0 +1,26 @@ +package xevion.everythingonastick.furnace; + +import net.minecraft.container.NameableContainerProvider; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; + +public class FurnaceWand extends Item { + public FurnaceWand(Settings settings) { + super(settings); + }; + + private WandFurnaceBlockEntity block_entity = new WandFurnaceBlockEntity(); + + public TypedActionResult use(World world, PlayerEntity player, Hand hand) { + if(!world.isClient()) { + player.openContainer((NameableContainerProvider)block_entity); + } + return new TypedActionResult<>(ActionResult.SUCCESS, player.getStackInHand(hand)); + } + +} diff --git a/src/main/resources/assets/everything-on-a-stick/icon.png b/src/main/resources/assets/everything-on-a-stick/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c4cc0381906f08522024b30992432665b0a2b309 GIT binary patch literal 3895 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

uvzy{i~m5($?3A{ZU zQ#gEAklg??_6SqKMDHC@JhA#_Yuu8r2pkVgjpnGBhq%LQHgX^1T)id?&*d5@L9)aY z=*^wSQSoE8;xc>N1zM2o7;0ZNSdbgU^lp(qpk1)xJz8#X#zhpp?vctK@my}@zW~so zRwio3eCzL5@@#8Gb1672LxCorJL4p*47?`4RZQ}c`t_^O^rq}q1;Kgp9>C+I*QCph z=NmOsQG$A?Tp7!1^R==2m6HU;LuEj?@fRh>DfQ<1E;}^J?M1^5hn%I7GtgwrRRk*k zf*VhcuuC5!2kqEAi58btFC=W@`KYPdrj`42IU;~5%k?PMfQ=Ej;Z9XH75z{e>;Vq5 zE0AtDi*5BJ685OJ&S*tOKvcY6)-#DSNbs~pcR2KKI73CpREz-dbNZ1wcUtRq9J26J zmqkBA5+<&krKdC>&70kIeY|P9C<-|&x+M1DuiUdWJ?AzO&GuX&*;ZjO3$lM5ICu9Nb?F z>{eL%U78%8A#v0pIH~96OhLWXVeBY2J;kz)!&H$fVqLb|2trA4Px+Kw!FYf%)*CvCBa|=vJ3GRV8lnE>SjmpeR?m-TQ+gV1Gt13JlJH8erj-c> zM(memi?5R+UH;l*=Qp`Y?vUqJMPkJ=$5UhIgwSem)^^g3U9~e~sU{S{2N65XwJz_f z8VUJrTZl80jJj*jw^sVDt`8LcIh|O2U0rZ1Nya1Ov6o$qAXh|9HEAO>V^udv^IFs3 zuwChn2^uO$@xpvn z)(A%?teo<4_41Fw&Qfl`rVjCZ8|fhu$-R5qw8X8W7`~plkHnyn%K=`I7qtY>XrjoZ z>=e4efv9QZpRnRMeS1yPr2W`LxJ2o-U}1Q;4{YF@yQFoC%f=Cu(%I@qB^*ij%s(Z1 z4o?{8?YZPK*>!KoS7++Rb_44o1Eq{tojeG%Iy>CK{os5jiRC@QN0s7-PC_S&xjxZ~@}HVa0Lrm)USBeAoFRkptzCe>zq1131+7=% zg)idqS-FWkPv^klWG2a_28P@Zfalbp@Le5 W-N*d