use of net.minecraft.tags.ITag in project minecolonies by Minecolonies.
the class Tag method deserialize.
/**
* Deserialize the deliverable.
*
* @param controller the controller.
* @param compound the compound.
* @return the deliverable.
*/
public static Tag deserialize(final IFactoryController controller, final CompoundNBT compound) {
final ITag<Item> theTag = ItemTags.bind(compound.getString(NBT_TAG));
final ItemStack result = compound.getAllKeys().contains(NBT_RESULT) ? ItemStackUtils.deserializeFromNBT(compound.getCompound(NBT_RESULT)) : ItemStackUtils.EMPTY;
int count = compound.getInt("size");
int minCount = count;
if (compound.getAllKeys().contains(NBT_COUNT)) {
count = compound.getInt(NBT_COUNT);
minCount = compound.getInt(NBT_MINCOUNT);
}
return new Tag(theTag, result, count, minCount);
}
use of net.minecraft.tags.ITag in project minecolonies by Minecolonies.
the class AbstractEntityAIBasic method checkIfRequestForTagExistOrCreateAsynch.
/**
* Check if a tag has been requested already or is in the inventory. If not in the inventory and not requested already, create request
*
* @param tag the requested tag.
* @return true if in the inventory, else false.
*/
public boolean checkIfRequestForTagExistOrCreateAsynch(@NotNull final ITag<Item> tag, final int count) {
if (InventoryUtils.hasItemInItemHandler(worker.getInventoryCitizen(), stack -> stack.getItem().is(tag) && stack.getCount() >= count)) {
return true;
}
if (InventoryUtils.getCountFromBuilding(getOwnBuilding(), itemStack -> itemStack.getItem().is(tag)) >= count && InventoryUtils.transferXOfFirstSlotInProviderWithIntoNextFreeSlotInItemHandler(getOwnBuilding(), itemStack -> itemStack.getItem().is(tag), count, worker.getInventoryCitizen())) {
return true;
}
if (getOwnBuilding().getOpenRequestsOfTypeFiltered(worker.getCitizenData(), TypeConstants.TAG_REQUEST, (IRequest<? extends com.minecolonies.api.colony.requestsystem.requestable.Tag> r) -> r.getRequest().getTag().equals(tag)).isEmpty() && getOwnBuilding().getCompletedRequestsOfTypeFiltered(worker.getCitizenData(), TypeConstants.TAG_REQUEST, (IRequest<? extends com.minecolonies.api.colony.requestsystem.requestable.Tag> r) -> r.getRequest().getTag().equals(tag)).isEmpty()) {
final IDeliverable tagRequest = new com.minecolonies.api.colony.requestsystem.requestable.Tag(tag, count);
worker.getCitizenData().createRequestAsync(tagRequest);
}
return false;
}
use of net.minecraft.tags.ITag in project minecolonies by ldtteam.
the class AbstractEntityAIBasic method checkIfRequestForTagExistOrCreateAsynch.
/**
* Check if a tag has been requested already or is in the inventory. If not in the inventory and not requested already, create request
*
* @param tag the requested tag.
* @return true if in the inventory, else false.
*/
public boolean checkIfRequestForTagExistOrCreateAsynch(@NotNull final ITag<Item> tag, final int count) {
if (InventoryUtils.hasItemInItemHandler(worker.getInventoryCitizen(), stack -> stack.getItem().is(tag) && stack.getCount() >= count)) {
return true;
}
if (InventoryUtils.getCountFromBuilding(getOwnBuilding(), itemStack -> itemStack.getItem().is(tag)) >= count && InventoryUtils.transferXOfFirstSlotInProviderWithIntoNextFreeSlotInItemHandler(getOwnBuilding(), itemStack -> itemStack.getItem().is(tag), count, worker.getInventoryCitizen())) {
return true;
}
if (getOwnBuilding().getOpenRequestsOfTypeFiltered(worker.getCitizenData(), TypeConstants.TAG_REQUEST, (IRequest<? extends com.minecolonies.api.colony.requestsystem.requestable.Tag> r) -> r.getRequest().getTag().equals(tag)).isEmpty() && getOwnBuilding().getCompletedRequestsOfTypeFiltered(worker.getCitizenData(), TypeConstants.TAG_REQUEST, (IRequest<? extends com.minecolonies.api.colony.requestsystem.requestable.Tag> r) -> r.getRequest().getTag().equals(tag)).isEmpty()) {
final IDeliverable tagRequest = new com.minecolonies.api.colony.requestsystem.requestable.Tag(tag, count);
worker.getCitizenData().createRequestAsync(tagRequest);
}
return false;
}
use of net.minecraft.tags.ITag in project minecolonies by Minecolonies.
the class Tag method deserialize.
public static Tag deserialize(final IFactoryController controller, final PacketBuffer buffer) {
final ITag<Item> theTag = ItemTags.getAllTags().getTag(ResourceLocation.tryParse(buffer.readUtf(32767)));
final ItemStack result = buffer.readBoolean() ? buffer.readItem() : ItemStack.EMPTY;
final int count = buffer.readInt();
final int minCount = buffer.readInt();
return new Tag(theTag, result, count, minCount);
}
use of net.minecraft.tags.ITag in project Mekanism by mekanism.
the class ChemicalCrystallizerRecipeCategory method setRecipe.
@Override
public void setRecipe(IRecipeLayout recipeLayout, ChemicalCrystallizerRecipe recipe, IIngredients ingredients) {
IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks();
initItem(itemStacks, 0, false, output, recipe.getOutputDefinition());
IChemicalStackIngredient<?, ?> input = recipe.getInput();
if (input instanceof GasStackIngredient) {
initChemical(recipeLayout, recipe, MekanismJEI.TYPE_GAS, (GasStackIngredient) input, null);
} else if (input instanceof InfusionStackIngredient) {
initChemical(recipeLayout, recipe, MekanismJEI.TYPE_INFUSION, (InfusionStackIngredient) input, null);
} else if (input instanceof PigmentStackIngredient) {
initChemical(recipeLayout, recipe, MekanismJEI.TYPE_PIGMENT, (PigmentStackIngredient) input, null);
} else if (input instanceof SlurryStackIngredient) {
SlurryStackIngredient slurryInput = (SlurryStackIngredient) input;
Set<ITag<Item>> tags = new HashSet<>();
for (SlurryStack slurryStack : slurryInput.getRepresentations()) {
Slurry slurry = slurryStack.getType();
if (!slurry.isIn(MekanismTags.Slurries.DIRTY)) {
ITag<Item> oreTag = slurry.getOreTag();
if (oreTag != null) {
tags.add(oreTag);
}
}
}
if (tags.size() == 1) {
initChemical(recipeLayout, recipe, MekanismJEI.TYPE_SLURRY, slurryInput, itemStacks);
// TODO: Eventually come up with a better way to do this to allow for if there outputs based on the input and multiple input types
tags.stream().findFirst().ifPresent(tag -> initItem(itemStacks, 1, false, slurryOreSlot, tag.getValues().stream().map(ItemStack::new).collect(Collectors.toList())));
} else {
initChemical(recipeLayout, recipe, MekanismJEI.TYPE_SLURRY, slurryInput, null);
}
}
}
Aggregations