Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.esinia.server.invintories.anvils;
- import java.awt.Color;
- import java.io.IOException;
- import java.nio.file.Path;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Optional;
- import org.spongepowered.api.Sponge;
- import org.spongepowered.api.data.DataView;
- import org.spongepowered.api.data.key.Keys;
- import org.spongepowered.api.entity.living.player.Player;
- import org.spongepowered.api.event.Listener;
- import org.spongepowered.api.event.filter.Getter;
- import org.spongepowered.api.event.filter.cause.Root;
- import org.spongepowered.api.event.item.inventory.ClickInventoryEvent;
- import org.spongepowered.api.item.ItemType;
- import org.spongepowered.api.item.ItemTypes;
- import org.spongepowered.api.item.inventory.Inventory;
- import org.spongepowered.api.item.inventory.ItemStack;
- import org.spongepowered.api.item.inventory.property.InventoryTitle;
- import org.spongepowered.api.text.Text;
- import org.spongepowered.api.text.format.TextColors;
- import ninja.leaping.configurate.ConfigurationNode;
- import ninja.leaping.configurate.commented.CommentedConfigurationNode;
- import ninja.leaping.configurate.hocon.HoconConfigurationLoader;
- import ninja.leaping.configurate.loader.ConfigurationLoader;
- //Class Name and main Method
- public class AnvilStoneInventory {
- //private ConfigurationNode root;
- //Listener for following event
- @Listener
- //Inventory Click event. Filtering based on the root player. Setting inventory variable as event variable.
- public void onInventoryClick(ClickInventoryEvent event, @Root Player player, @Getter("getTargetInventory") Inventory inventory) {
- //assert root.getNode("something", "something-else", "key").getString().equals("value");
- //Checks if inventory name contains "Stone Working then proceeds"
- if (inventory.getName().get().contains("Stone Working")){
- //Sponge.getServer().getBroadcastChannel().send(Text.of("1"));
- //Cancels the event
- event.setCancelled(true);
- //Gets result of the cursor clicking on an item. Gets display name of the items. Checks if that display is "Stone Shovel" then proceeds if true
- if (event.getCursorTransaction().getFinal().get(Keys.DISPLAY_NAME).get().equals(Text.of("Stone Shovel"))){
- //Optional itemtype variable called shovelHead is created with the ItemType based off of the itemID if the ItemType exists
- Optional<ItemType> shovelHead_ = Sponge.getGame().getRegistry().getType(ItemType.class, "forgecraft:wootzshovelhead");
- //ItemType variable shovelHead equals shovelHead_
- ItemType shovelHead = shovelHead_.get();
- //boolean set to false
- boolean hasShovelHead = false;
- //boolean set to false
- boolean hasToolHandle = false;
- //Inventory variable titled slot is loops for every item slot in the players inventory that matches the itemstack shovelHead
- for (Inventory slot : player.getInventory().query(shovelHead).slots()){
- //Itemstack Variable stack is set to the itemstack inside the Inventory variable slot
- ItemStack stack = slot.peek().get();
- //Checks if the itemstack has display name "Stone Shovelhead" and if the item doesnt have an itemname it uses the text "EMPTY" instead to check
- if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Stone Shovelhead")){
- //boolean set to true
- hasShovelHead = true;
- //broadcasting to the server
- Sponge.getServer().getBroadcastChannel().send(Text.of("hasShovelHead: " + hasShovelHead));
- //breaks out of the loop
- break;
- }
- }
- //Inventory variable titled slot is looped for every item slot in the player inventory that matches ItemType.Stick
- for (Inventory slot : player.getInventory().query(ItemTypes.STICK).slots()){
- //Itemstack variable is set to the itemstack inside the Inventory variable slot
- ItemStack stack = slot.peek().get();
- //Checks if itemstack has the displayname "Tool Handle"
- if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Tool Handle")){
- //boolean set to true
- hasToolHandle = true;
- //broadcasting to server
- Sponge.getServer().getBroadcastChannel().send(Text.of("hasToolHandle: " + hasToolHandle));
- //breaks loop
- break;
- }
- }
- //if both booleans are true it proceeds
- if (hasShovelHead && hasToolHandle){
- //broadcast to server
- Sponge.getServer().getBroadcastChannel().send(Text.of("hasShovelHead and hasToolHandle"));
- //integer variable titled quantity equals 0
- int quantity = 0;
- //Inventory variable titled slot is looped for every item slot in the player inventory that matches itemtype variable shovelHead
- for (Inventory slot : player.getInventory().query(shovelHead).slots()) {
- //Itemstack variable set to itemstack inside inventory variable slot
- ItemStack stack = slot.peek().get();
- //Display name checking again
- if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Stone Shovelhead")){
- //adds to quantity the size of stack (This happens each loop until looping is complete)
- quantity += stack.getQuantity();
- }
- }
- Sponge.getServer().getBroadcastChannel().send(Text.of("quantity: " + quantity));
- // integer variable titled quantity2 equals 0
- int quantity2 = 0;
- //Inventory variable titled slot is looped for every item slot in the player inventory that matches itemtype.Stick
- for (Inventory slot : player.getInventory().query(ItemTypes.STICK).slots()) {
- //Itemstack variable stack is set to itemstack inside inventory variable slot
- ItemStack stack = slot.peek().get();
- //checking for display name again
- if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Tool Handle")){
- //adds to quantity2 the size of stack (This happens each loop until looping is complete)
- quantity2 += stack.getQuantity();
- }
- }
- //broadcasting to server
- Sponge.getServer().getBroadcastChannel().send(Text.of("quantity2: " + quantity2));
- //if quantity is less than 1 it proceeds
- if (quantity < 1) {
- //sends player a message
- player.sendMessage(Text.of(""));
- //task complete
- return;
- }
- //if quantity2 is less than 1 it proceeds
- if (quantity2 < 1) {
- //sends player a message
- player.sendMessage(Text.of(""));
- //task complete
- return;
- }
- //if both quantity and quantity2 are larger than 1 it proceeds
- if (quantity >= 1 && quantity2 >= 1) {
- //Looping inventory slots looking for slots with itemtype shovelHead
- for (Inventory slot : player.getInventory().query(shovelHead).slots()) {
- //Taking the itemstack out of the slot
- ItemStack stack = slot.peek().get();
- //Checking the itemstack for display name
- if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Stone Shovelhead")){
- //If the stack quantity is greater or equal to 1 it proceeds
- if (stack.getQuantity() >= 1) {
- //pulling 1 of the itemstack from the player
- slot.poll(1);
- //breaking out of the loop
- break;
- }
- }
- }
- //looping inventory slots looking for slots with ItemType Stick
- for (Inventory slot : player.getInventory().query(ItemTypes.STICK).slots()) {
- //Taking the itemstack out of the slot
- ItemStack stack = slot.peek().get();
- //Checking the itemstack for displayname
- if (stack.get(Keys.DISPLAY_NAME).orElse(Text.EMPTY).toPlain().equals("Tool Handle")){
- //Checking to see if stack size is greater than or equal to 1
- if (stack.getQuantity() >= 1) {
- //pulling 1 of the items from itemstack out of players inventory
- slot.poll(1);
- //beaking loop
- break;
- }
- }
- }
- //Creating Optional Itemtype variable titled Stoneshovel_ if the specified itemtype based off the the itemID exists
- Optional<ItemType> Stoneshovel_ = Sponge.getGame().getRegistry().getType(ItemType.class, "forgecraft:wootzshovel");
- //creating itemtype based on the optional itemtype
- ItemType StoneShovelType = Stoneshovel_.get();
- //creating itemstack based off of StoneShovelType with the quantiy 1
- ItemStack stoneshovel = ItemStack.of(StoneShovelType, 1);
- //Giving itemstack a displayname
- stoneshovel.offer(Keys.DISPLAY_NAME, Text.of("Stone Shovel"));
- //List<Text> itemShovelLore = new ArrayList<Text>();
- //itemShovelLore.add(Text.of(TextColors.GOLD, "Crafting Requirements:"));
- //itemShovelLore.add(Text.of(TextColors.GOLD, "1 Flat Stone"));
- //itemShovelLore.add(Text.of(TextColors.GOLD, "1 Tool Handle"));
- //stoneshovel.offer(Keys.ITEM_LORE , itemShovelLore);
- //giving player the itemstack stoneshovel
- player.getInventory().offer(stoneshovel);
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment