/
RemoveBannerPatternCauldronRecipe.java
75 lines (66 loc) · 2.41 KB
/
RemoveBannerPatternCauldronRecipe.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package knightminer.inspirations.recipes.recipe.cauldron;
import knightminer.inspirations.library.recipe.cauldron.CauldronContentTypes;
import knightminer.inspirations.library.recipe.cauldron.inventory.ICauldronInventory;
import knightminer.inspirations.library.recipe.cauldron.inventory.IModifyableCauldronInventory;
import knightminer.inspirations.library.recipe.cauldron.recipe.ICauldronRecipe;
import knightminer.inspirations.recipes.InspirationsRecipes;
import net.minecraft.fluid.Fluids;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.IRecipeSerializer;
import net.minecraft.tags.ItemTags;
import net.minecraft.tileentity.BannerTileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundEvents;
import net.minecraft.world.World;
/**
* Cauldron recipe to remove banner patterns
*/
public class RemoveBannerPatternCauldronRecipe implements ICauldronRecipe {
private final ResourceLocation id;
public RemoveBannerPatternCauldronRecipe(ResourceLocation id) {
this.id = id;
}
@Override
public boolean matches(ICauldronInventory inv, World worldIn) {
ItemStack stack = inv.getStack();
// must be at least one level of water, be a banner, and have patterns
return inv.getLevel() > 0 && inv.getContents().contains(CauldronContentTypes.FLUID, Fluids.WATER)
&& ItemTags.BANNERS.contains(stack.getItem())
&& BannerTileEntity.getPatterns(stack) > 0;
}
@Override
public void handleRecipe(IModifyableCauldronInventory inv) {
// remove patterns
ItemStack stack = inv.getStack().split(1);
BannerTileEntity.removeBannerData(stack);
inv.setOrGiveStack(stack);
// use one level of water
inv.addLevel(-1);
// play sound
inv.playSound(SoundEvents.ENTITY_FISHING_BOBBER_SPLASH);
}
/**
* @deprecated Use {@link #getCraftingResult(IInventory)}
*/
@Deprecated
@Override
public ItemStack getRecipeOutput() {
return new ItemStack(Items.WHITE_BANNER);
}
@Override
public ItemStack getCraftingResult(ICauldronInventory inv) {
ItemStack stack = inv.getStack().copy();
BannerTileEntity.removeBannerData(stack);
return stack;
}
@Override
public ResourceLocation getId() {
return id;
}
@Override
public IRecipeSerializer<?> getSerializer() {
return InspirationsRecipes.removeBannerPatternSerializer;
}
}