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 0000000..c4cc038 Binary files /dev/null and b/src/main/resources/assets/everything-on-a-stick/icon.png differ diff --git a/src/main/resources/assets/everything-on-a-stick/lang/en_us.json b/src/main/resources/assets/everything-on-a-stick/lang/en_us.json new file mode 100644 index 0000000..cf6d7cb --- /dev/null +++ b/src/main/resources/assets/everything-on-a-stick/lang/en_us.json @@ -0,0 +1,6 @@ +{ + "item.everything-on-a-stick.crafting-table-on-a-stick" : "Crafting Table on a Stick", + "item.everything-on-a-stick.furnace-on-a-stick" : "Furnace on a Stick", + "item.everything-on-a-stick.enderchest-on-a-stick" : "Enderchest on a Stick", + "item.everything-on-a-stick.enchanting-table-on-a-stick" : "Enchanting Table on a Stick" +} \ No newline at end of file diff --git a/src/main/resources/modid.mixins.json b/src/main/resources/modid.mixins.json deleted file mode 100644 index e243f0a..0000000 --- a/src/main/resources/modid.mixins.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "required": true, - "package": "net.fabricmc.example.mixin", - "compatibilityLevel": "JAVA_8", - "mixins": [ - ], - "client": [ - "ExampleMixin" - ], - "injectors": { - "defaultRequire": 1 - } -}