/
FillTexturedBlockLootFunction.java
59 lines (51 loc) · 1.91 KB
/
FillTexturedBlockLootFunction.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
package knightminer.inspirations.common.data;
import com.google.common.collect.ImmutableSet;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import knightminer.inspirations.library.util.TextureBlockUtil;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.storage.loot.LootContext;
import net.minecraft.world.storage.loot.LootFunction;
import net.minecraft.world.storage.loot.LootParameter;
import net.minecraft.world.storage.loot.LootParameters;
import net.minecraft.world.storage.loot.conditions.ILootCondition;
import javax.annotation.Nonnull;
import java.util.Set;
/**
* Applies the data for a texturable block to the dropped item.
* No configuration is necessary.
*/
public class FillTexturedBlockLootFunction extends LootFunction {
public FillTexturedBlockLootFunction(ILootCondition[] conditions) {
super(conditions);
}
public FillTexturedBlockLootFunction() {
super(new ILootCondition[0]);
}
@Nonnull
@Override
protected ItemStack doApply(@Nonnull ItemStack stack, @Nonnull LootContext context) {
TileEntity te = context.get(LootParameters.BLOCK_ENTITY);
if (te != null) {
stack = TextureBlockUtil.setStackTexture(stack, TextureBlockUtil.getTextureBlockName(te));
}
return stack;
}
@Nonnull
@Override
public Set<LootParameter<?>> getRequiredParameters() {
return ImmutableSet.of(LootParameters.BLOCK_ENTITY);
}
public static class Serializer extends LootFunction.Serializer<FillTexturedBlockLootFunction> {
public Serializer(ResourceLocation location) {
super(location, FillTexturedBlockLootFunction.class);
}
@Nonnull
@Override
public FillTexturedBlockLootFunction deserialize(@Nonnull JsonObject json, @Nonnull JsonDeserializationContext ctx, @Nonnull ILootCondition[] conditions) {
return new FillTexturedBlockLootFunction(conditions);
}
}
}