added bag (chest functionality only)
This commit is contained in:
parent
130d258ada
commit
033823d036
@ -9,7 +9,7 @@
|
|||||||
loader_version=0.12.12
|
loader_version=0.12.12
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 1.18.1.3
|
mod_version = 1.18.1.4
|
||||||
maven_group = de.jottyfan.minecraft
|
maven_group = de.jottyfan.minecraft
|
||||||
archives_base_name = quickiefabric
|
archives_base_name = quickiefabric
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ import net.minecraft.sound.SoundEvents;
|
|||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author jotty
|
* @author jotty
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -104,7 +104,7 @@ public class BackpackInventory extends SimpleInventory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* get the items from the itemStack that contains the backpack
|
* get the items from the itemStack that contains the backpack
|
||||||
*
|
*
|
||||||
* @param itemStack the itemStack of the backpack
|
* @param itemStack the itemStack of the backpack
|
||||||
* @return the list of found itemStacks in the backpack
|
* @return the list of found itemStacks in the backpack
|
||||||
*/
|
*/
|
||||||
@ -125,7 +125,7 @@ public class BackpackInventory extends SimpleInventory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* set the items in the itemStack that contains the backpack
|
* set the items in the itemStack that contains the backpack
|
||||||
*
|
*
|
||||||
* @param itemStack the backpack's itemStack
|
* @param itemStack the backpack's itemStack
|
||||||
* @param itemStacks the collection of lists of itemStacks for the backpack
|
* @param itemStacks the collection of lists of itemStacks for the backpack
|
||||||
*/
|
*/
|
||||||
@ -156,4 +156,21 @@ public class BackpackInventory extends SimpleInventory {
|
|||||||
tag.put(NBT_ITEMS, listTag);
|
tag.put(NBT_ITEMS, listTag);
|
||||||
itemStack.getOrCreateNbt().put(NBT_BACKPACK, tag);
|
itemStack.getOrCreateNbt().put(NBT_BACKPACK, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* replace every slot of the backpack with the content of backpackInventory
|
||||||
|
*
|
||||||
|
* @param itemStack the backpack's itemStack
|
||||||
|
* @param backpackInventory the replacement inventory
|
||||||
|
*/
|
||||||
|
public static void setItemsToBackpack(ItemStack itemStack, BackpackInventory backpackInventory) {
|
||||||
|
Collection<List<ItemStack>> itemStacks = new ArrayList<>();
|
||||||
|
List<ItemStack> firstList = new ArrayList<>();
|
||||||
|
for (int i = 0; i < backpackInventory.size(); i++) {
|
||||||
|
ItemStack stack = backpackInventory.getStack(i);
|
||||||
|
firstList.add(stack);
|
||||||
|
}
|
||||||
|
itemStacks.add(firstList);
|
||||||
|
setItemsToBackpack(itemStack, itemStacks);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
package de.jottyfan.minecraft.quickiefabric.container;
|
package de.jottyfan.minecraft.quickiefabric.container;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
|
|
||||||
import de.jottyfan.minecraft.quickiefabric.init.RegistryManager;
|
import de.jottyfan.minecraft.quickiefabric.init.RegistryManager;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
@ -14,12 +11,13 @@ import net.minecraft.network.PacketByteBuf;
|
|||||||
import net.minecraft.screen.ScreenHandler;
|
import net.minecraft.screen.ScreenHandler;
|
||||||
import net.minecraft.screen.slot.Slot;
|
import net.minecraft.screen.slot.Slot;
|
||||||
import net.minecraft.screen.slot.SlotActionType;
|
import net.minecraft.screen.slot.SlotActionType;
|
||||||
|
import net.minecraft.sound.SoundCategory;
|
||||||
|
import net.minecraft.sound.SoundEvents;
|
||||||
import net.minecraft.util.Hand;
|
import net.minecraft.util.Hand;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
public class BackpackScreenHandler extends ScreenHandler {
|
public class BackpackScreenHandler extends ScreenHandler {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger(BackpackScreenHandler.class);
|
|
||||||
|
|
||||||
private final BackpackInventory backpackInventory;
|
private final BackpackInventory backpackInventory;
|
||||||
private final PlayerEntity player;
|
private final PlayerEntity player;
|
||||||
private final ItemStack thisStack;
|
private final ItemStack thisStack;
|
||||||
@ -68,41 +66,41 @@ public class BackpackScreenHandler extends ScreenHandler {
|
|||||||
super.close(player);
|
super.close(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack transferSlot(PlayerEntity player, int index) {
|
||||||
|
ItemStack itemStack = ItemStack.EMPTY;
|
||||||
|
Slot slot = (Slot) this.slots.get(index);
|
||||||
|
if (slot != null && slot.hasStack()) {
|
||||||
|
ItemStack itemStack2 = slot.getStack();
|
||||||
|
itemStack = itemStack2.copy();
|
||||||
|
if (index < 54 ? !this.insertItem(itemStack2, 54, this.slots.size(), true) : !this.insertItem(itemStack2, 0, 54, false)) {
|
||||||
|
return ItemStack.EMPTY;
|
||||||
|
}
|
||||||
|
if (itemStack2.isEmpty()) {
|
||||||
|
slot.setStack(ItemStack.EMPTY);
|
||||||
|
} else {
|
||||||
|
slot.markDirty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return itemStack;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSlotClick(int slotId, int quickCraftData, SlotActionType actionType, PlayerEntity playerEntity) {
|
public void onSlotClick(int slotId, int quickCraftData, SlotActionType actionType, PlayerEntity playerEntity) {
|
||||||
|
if (SlotActionType.QUICK_CRAFT.equals(actionType)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
Slot slot = slotId >= 0 && slotId < this.slots.size() ? this.slots.get(slotId) : null;
|
Slot slot = slotId >= 0 && slotId < this.slots.size() ? this.slots.get(slotId) : null;
|
||||||
ItemStack stack = slot == null ? ItemStack.EMPTY : slot.getStack();
|
ItemStack stack = slot == null ? ItemStack.EMPTY : slot.getStack();
|
||||||
if (actionType.equals(SlotActionType.PICKUP) || actionType.equals(SlotActionType.PICKUP_ALL)
|
if (!stack.getName().equals(thisStack.getName())) {
|
||||||
|| actionType.equals(SlotActionType.SWAP)) {
|
if (SlotActionType.THROW.equals(actionType)) {
|
||||||
super.onSlotClick(slotId, quickCraftData, actionType, playerEntity);
|
|
||||||
} else if (actionType.equals(SlotActionType.THROW)) { // pickup from the active items line
|
|
||||||
if (stack.getName().equals(thisStack.getName())) {
|
|
||||||
return; // omit to put the backpack into itself; as a side effect, omits adding same
|
|
||||||
// colored backpacks into this one
|
|
||||||
} else {
|
|
||||||
// do not throw but pickup
|
|
||||||
super.onSlotClick(slotId, quickCraftData, SlotActionType.PICKUP, playerEntity);
|
super.onSlotClick(slotId, quickCraftData, SlotActionType.PICKUP, playerEntity);
|
||||||
}
|
|
||||||
} else if (actionType.equals(SlotActionType.QUICK_CRAFT)) { // drag - but does not drag the right slot content, stack is empty
|
|
||||||
if (slotId < 0) {
|
|
||||||
return; // do not execute anything if slotId is < 0 as sometimes -999
|
|
||||||
}
|
|
||||||
if (playerEntity.world.isClient) {
|
|
||||||
LOGGER.debug("ignoring action type {} on slotId {} for {} x {}", actionType.toString(), slotId,
|
|
||||||
stack.getCount(), stack.getItem().toString());
|
|
||||||
}
|
|
||||||
} else if (actionType.equals(SlotActionType.QUICK_MOVE)) { // shift click
|
|
||||||
if (stack.getName().equals(thisStack.getName())) {
|
|
||||||
return; // omit to put the backpack into itself; as a side effect, omits adding same
|
|
||||||
// colored backpacks into this one
|
|
||||||
} else {
|
} else {
|
||||||
// do not move but pickup all
|
super.onSlotClick(slotId, quickCraftData, actionType, playerEntity);
|
||||||
super.onSlotClick(slotId, quickCraftData, SlotActionType.PICKUP_ALL, playerEntity);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (playerEntity.world.isClient) {
|
if (playerEntity.world.isClient) {
|
||||||
LOGGER.debug("ignoring action type {} on slotId {} for {} x {}", actionType.toString(), slotId,
|
playerEntity.world.playSound(null, new BlockPos(playerEntity.getPos()), SoundEvents.ENTITY_VILLAGER_NO, SoundCategory.PLAYERS, 1f, 1f);
|
||||||
stack.getCount(), stack.getItem().toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,7 @@ public class RegistryManager {
|
|||||||
stacks.add(new ItemStack(QuickieItems.BACKPACK_ORANGE));
|
stacks.add(new ItemStack(QuickieItems.BACKPACK_ORANGE));
|
||||||
stacks.add(new ItemStack(QuickieItems.BACKPACK_PURPLE));
|
stacks.add(new ItemStack(QuickieItems.BACKPACK_PURPLE));
|
||||||
stacks.add(new ItemStack(QuickieItems.BACKPACK_LIGHTBLUE));
|
stacks.add(new ItemStack(QuickieItems.BACKPACK_LIGHTBLUE));
|
||||||
|
stacks.add(new ItemStack(QuickieItems.BAG));
|
||||||
stacks.add(new ItemStack(QuickieItems.STUB));
|
stacks.add(new ItemStack(QuickieItems.STUB));
|
||||||
stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERAXE));
|
stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERAXE));
|
||||||
stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERPICKAXE));
|
stacks.add(new ItemStack(QuickieTools.SPEEDPOWDERPICKAXE));
|
||||||
@ -241,6 +242,7 @@ public class RegistryManager {
|
|||||||
registerItem(QuickieItems.BACKPACK_ORANGE, "backpack_orange");
|
registerItem(QuickieItems.BACKPACK_ORANGE, "backpack_orange");
|
||||||
registerItem(QuickieItems.BACKPACK_PURPLE, "backpack_purple");
|
registerItem(QuickieItems.BACKPACK_PURPLE, "backpack_purple");
|
||||||
registerItem(QuickieItems.BACKPACK_LIGHTBLUE, "backpack_lightblue");
|
registerItem(QuickieItems.BACKPACK_LIGHTBLUE, "backpack_lightblue");
|
||||||
|
registerItem(QuickieItems.BAG, "bag");
|
||||||
registerItem(QuickieItems.STUB, "stub");
|
registerItem(QuickieItems.STUB, "stub");
|
||||||
|
|
||||||
ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.COTTONSEED, 0.5f);
|
ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.COTTONSEED, 0.5f);
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package de.jottyfan.minecraft.quickiefabric.item;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.item.ItemUsageContext;
|
||||||
|
import net.minecraft.util.Hand;
|
||||||
|
import net.minecraft.util.hit.BlockHitResult;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jotty
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ModdedItemUsageContext extends ItemUsageContext {
|
||||||
|
|
||||||
|
public ModdedItemUsageContext(World world, PlayerEntity player, Hand hand, ItemStack stack, BlockHitResult hit) {
|
||||||
|
super(world, player, hand, stack, hit);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -34,7 +34,7 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author jotty
|
* @author jotty
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -78,7 +78,7 @@ public class ItemBackpack extends Item {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* sort the content of the backpack; for spreaded items, combine them until the itemstack size is reached
|
* sort the content of the backpack; for spreaded items, combine them until the itemstack size is reached
|
||||||
*
|
*
|
||||||
* @param itemStack the itemStack of the backpack
|
* @param itemStack the itemStack of the backpack
|
||||||
* @return the itemStack of the sorted backpack
|
* @return the itemStack of the sorted backpack
|
||||||
*/
|
*/
|
||||||
@ -91,7 +91,7 @@ public class ItemBackpack extends Item {
|
|||||||
List<ItemStack> foundStacks = map.get(id);
|
List<ItemStack> foundStacks = map.get(id);
|
||||||
if (foundStacks == null) {
|
if (foundStacks == null) {
|
||||||
foundStacks = new ArrayList<>();
|
foundStacks = new ArrayList<>();
|
||||||
map.put(id, foundStacks);
|
map.put(id, foundStacks);
|
||||||
}
|
}
|
||||||
foundStacks.add(stack);
|
foundStacks.add(stack);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,63 @@
|
|||||||
|
package de.jottyfan.minecraft.quickiefabric.items;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import de.jottyfan.minecraft.quickiefabric.container.BackpackInventory;
|
||||||
|
import de.jottyfan.minecraft.quickiefabric.item.ModdedItemUsageContext;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.item.ItemUsageContext;
|
||||||
|
import net.minecraft.text.TranslatableText;
|
||||||
|
import net.minecraft.util.ActionResult;
|
||||||
|
import net.minecraft.util.Hand;
|
||||||
|
import net.minecraft.util.hit.BlockHitResult;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jotty
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ItemBag extends ItemBackpack {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionResult useOnBlock(ItemUsageContext context) {
|
||||||
|
BlockPos pos = context.getBlockPos();
|
||||||
|
World world = context.getWorld();
|
||||||
|
PlayerEntity player = context.getPlayer();
|
||||||
|
BlockState blockState = world.getBlockState(pos);
|
||||||
|
Block block = blockState.getBlock();
|
||||||
|
if (Blocks.FARMLAND.equals(block)) {
|
||||||
|
if (!world.isClient) {
|
||||||
|
player.sendMessage(new TranslatableText("msg.notyetimplemented"), false);
|
||||||
|
}
|
||||||
|
// BackpackInventory bi = new BackpackInventory(context.getStack());
|
||||||
|
// for (int slot = 0; slot < ItemBackpack.SLOTSIZE; slot++) {
|
||||||
|
// ItemStack stack = bi.getStack(slot);
|
||||||
|
// if (stack.getCount() > 0) {
|
||||||
|
// Item item = stack.getItem();
|
||||||
|
// BlockPos newPos = pos; // TODO: replace by iteration
|
||||||
|
// Vec3d newHitPos = context.getHitPos(); // TODO: replace by iteration
|
||||||
|
// BlockHitResult hit = new BlockHitResult(newHitPos, context.getSide(), newPos, context.hitsInsideBlock());
|
||||||
|
// ModdedItemUsageContext iuc = new ModdedItemUsageContext(world, player, Hand.MAIN_HAND, stack, hit);
|
||||||
|
// if (item.useOnBlock(iuc).equals(ActionResult.PASS)) {
|
||||||
|
// bi.setStack(slot, stack);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// ItemStack thisBackpack = player.getActiveItem();
|
||||||
|
// BackpackInventory.setItemsToBackpack(thisBackpack, bi);
|
||||||
|
return ActionResult.SUCCESS;
|
||||||
|
} else {
|
||||||
|
return super.useOnBlock(context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
package de.jottyfan.minecraft.quickiefabric.items;
|
package de.jottyfan.minecraft.quickiefabric.items;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author jotty
|
* @author jotty
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -27,6 +27,7 @@ public class QuickieItems {
|
|||||||
public static final ItemBackpack BACKPACK_ORANGE = new ItemBackpack();
|
public static final ItemBackpack BACKPACK_ORANGE = new ItemBackpack();
|
||||||
public static final ItemBackpack BACKPACK_PURPLE = new ItemBackpack();
|
public static final ItemBackpack BACKPACK_PURPLE = new ItemBackpack();
|
||||||
public static final ItemBackpack BACKPACK_LIGHTBLUE = new ItemBackpack();
|
public static final ItemBackpack BACKPACK_LIGHTBLUE = new ItemBackpack();
|
||||||
|
public static final ItemBag BAG = new ItemBag();
|
||||||
public static final ItemRottenFleshStripes ROTTEN_FLESH_STRIPES = new ItemRottenFleshStripes();
|
public static final ItemRottenFleshStripes ROTTEN_FLESH_STRIPES = new ItemRottenFleshStripes();
|
||||||
public static final ItemCarrotstack CARROTSTACK = new ItemCarrotstack();
|
public static final ItemCarrotstack CARROTSTACK = new ItemCarrotstack();
|
||||||
public static final ItemCotton COTTON = new ItemCotton();
|
public static final ItemCotton COTTON = new ItemCotton();
|
||||||
|
@ -86,7 +86,9 @@ public class ToolSpeedpowderHoe extends HoeItem implements ToolRangeable {
|
|||||||
@Override
|
@Override
|
||||||
public boolean canBreakNeighbors(BlockState blockState) {
|
public boolean canBreakNeighbors(BlockState blockState) {
|
||||||
return ToolManager.handleIsEffectiveOn(blockState, new ItemStack(this), null)
|
return ToolManager.handleIsEffectiveOn(blockState, new ItemStack(this), null)
|
||||||
|| Blocks.GRASS.equals(blockState.getBlock());
|
|| Blocks.GRASS.equals(blockState.getBlock())
|
||||||
|
|| Blocks.FERN.equals(blockState.getBlock())
|
||||||
|
|| Blocks.LARGE_FERN.equals(blockState.getBlock());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
"item.quickiefabric.backpack_orange": "orangener Rucksack",
|
"item.quickiefabric.backpack_orange": "orangener Rucksack",
|
||||||
"item.quickiefabric.backpack_purple": "lilaner Rucksack",
|
"item.quickiefabric.backpack_purple": "lilaner Rucksack",
|
||||||
"item.quickiefabric.backpack_lightblue": "hellblauer Rucksack",
|
"item.quickiefabric.backpack_lightblue": "hellblauer Rucksack",
|
||||||
|
"item.quickiefabric.bag": "Beutel",
|
||||||
"item.quickiefabric.rotten_flesh_stripes": "geschnittenes Gammelfleisch",
|
"item.quickiefabric.rotten_flesh_stripes": "geschnittenes Gammelfleisch",
|
||||||
"item.quickiefabric.carrotstack": "Karottenbündel",
|
"item.quickiefabric.carrotstack": "Karottenbündel",
|
||||||
"item.quickiefabric.cotton": "Baumwolle",
|
"item.quickiefabric.cotton": "Baumwolle",
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
"item.quickiefabric.backpack_orange": "orange backpack",
|
"item.quickiefabric.backpack_orange": "orange backpack",
|
||||||
"item.quickiefabric.backpack_purple": "purple backpack",
|
"item.quickiefabric.backpack_purple": "purple backpack",
|
||||||
"item.quickiefabric.backpack_lightblue": "light blue backpack",
|
"item.quickiefabric.backpack_lightblue": "light blue backpack",
|
||||||
|
"item.quickiefabric.bag": "bag",
|
||||||
"item.quickiefabric.rotten_flesh_stripes": "rotten flesh stripes",
|
"item.quickiefabric.rotten_flesh_stripes": "rotten flesh stripes",
|
||||||
"item.quickiefabric.carrotstack": "a bundle of carrots",
|
"item.quickiefabric.carrotstack": "a bundle of carrots",
|
||||||
"item.quickiefabric.cotton": "cotton",
|
"item.quickiefabric.cotton": "cotton",
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "quickiefabric:item/bag_empty",
|
||||||
|
"layer1": "quickiefabric:item/bag_full"
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 744 B |
Binary file not shown.
After Width: | Height: | Size: 781 B |
16
src/main/resources/data/quickiefabric/recipes/bag.json
Normal file
16
src/main/resources/data/quickiefabric/recipes/bag.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"type": "crafting_shaped",
|
||||||
|
"pattern": [
|
||||||
|
" ",
|
||||||
|
"c c",
|
||||||
|
" c "
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"c": {
|
||||||
|
"item": "minecraft:wheat"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"result": {
|
||||||
|
"item": "quickiefabric:bag"
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user