2018-09-12 01:29:49 +02:00
|
|
|
package com.minelittlepony.unicopia.item;
|
|
|
|
|
2019-01-31 14:58:24 +01:00
|
|
|
import java.util.List;
|
2019-02-07 10:46:59 +01:00
|
|
|
import java.util.function.Supplier;
|
2018-09-12 01:29:49 +02:00
|
|
|
|
2019-01-31 14:58:24 +01:00
|
|
|
import javax.annotation.Nullable;
|
|
|
|
|
2019-01-13 21:05:40 +01:00
|
|
|
import com.minelittlepony.unicopia.UItems;
|
2019-01-31 14:58:24 +01:00
|
|
|
import com.minelittlepony.unicopia.edibles.IEdible;
|
|
|
|
import com.minelittlepony.unicopia.edibles.Toxicity;
|
2019-02-07 10:46:59 +01:00
|
|
|
import com.minelittlepony.util.collection.Pool;
|
|
|
|
import com.minelittlepony.util.collection.Weighted;
|
2018-09-12 01:29:49 +02:00
|
|
|
|
|
|
|
import net.minecraft.block.BlockPlanks;
|
2019-01-31 14:58:24 +01:00
|
|
|
import net.minecraft.client.util.ITooltipFlag;
|
2018-09-12 01:29:49 +02:00
|
|
|
import net.minecraft.item.ItemFood;
|
|
|
|
import net.minecraft.item.ItemStack;
|
2019-01-31 14:58:24 +01:00
|
|
|
import net.minecraft.world.World;
|
2018-09-12 01:29:49 +02:00
|
|
|
|
2019-02-07 10:46:59 +01:00
|
|
|
public class ItemApple extends ItemFood implements IEdible {
|
|
|
|
|
|
|
|
public static final Pool<Object, Weighted<Supplier<ItemStack>>> typeVariantMap = Pool.of(BlockPlanks.EnumType.OAK,
|
|
|
|
BlockPlanks.EnumType.OAK, new Weighted<Supplier<ItemStack>>()
|
|
|
|
.put(1, () -> new ItemStack(UItems.rotten_apple))
|
|
|
|
.put(2, () -> new ItemStack(UItems.apple, 1, 1))
|
|
|
|
.put(3, () -> new ItemStack(UItems.apple, 1, 0)),
|
|
|
|
BlockPlanks.EnumType.SPRUCE, new Weighted<Supplier<ItemStack>>()
|
|
|
|
.put(1, () -> new ItemStack(UItems.apple, 1, 3))
|
|
|
|
.put(2, () -> new ItemStack(UItems.apple, 1, 1))
|
|
|
|
.put(3, () -> new ItemStack(UItems.apple, 1, 2))
|
|
|
|
.put(4, () -> new ItemStack(UItems.rotten_apple)),
|
|
|
|
BlockPlanks.EnumType.BIRCH, new Weighted<Supplier<ItemStack>>()
|
|
|
|
.put(1, () -> new ItemStack(UItems.rotten_apple))
|
|
|
|
.put(2, () -> new ItemStack(UItems.apple, 1, 2))
|
|
|
|
.put(5, () -> new ItemStack(UItems.apple, 1, 1)),
|
|
|
|
BlockPlanks.EnumType.JUNGLE, new Weighted<Supplier<ItemStack>>()
|
|
|
|
.put(5, () -> new ItemStack(UItems.apple, 1, 1))
|
|
|
|
.put(2, () -> new ItemStack(UItems.apple, 1, 2))
|
|
|
|
.put(1, () -> new ItemStack(UItems.apple, 1, 3)),
|
|
|
|
BlockPlanks.EnumType.ACACIA, new Weighted<Supplier<ItemStack>>()
|
|
|
|
.put(1, () -> new ItemStack(UItems.rotten_apple))
|
|
|
|
.put(2, () -> new ItemStack(UItems.apple, 1, 2))
|
|
|
|
.put(5, () -> new ItemStack(UItems.apple, 1, 1)),
|
|
|
|
BlockPlanks.EnumType.DARK_OAK, new Weighted<Supplier<ItemStack>>()
|
|
|
|
.put(1, () -> new ItemStack(UItems.rotten_apple))
|
|
|
|
.put(2, () -> new ItemStack(UItems.apple, 1, 2))
|
|
|
|
.put(5, () -> new ItemStack(UItems.zap_apple)
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
public static ItemStack getRandomItemStack(Object variant) {
|
|
|
|
return typeVariantMap.getOptional(variant)
|
|
|
|
.flatMap(Weighted::get)
|
|
|
|
.map(Supplier::get)
|
|
|
|
.orElse(ItemStack.EMPTY);
|
2019-02-06 21:24:22 +01:00
|
|
|
}
|
2018-09-12 01:29:49 +02:00
|
|
|
|
2019-02-07 10:46:59 +01:00
|
|
|
public ItemStack getRandomApple() {
|
|
|
|
return getRandomApple(null);
|
|
|
|
}
|
2018-09-12 01:29:49 +02:00
|
|
|
|
2019-02-07 10:46:59 +01:00
|
|
|
public ItemStack getRandomApple(Object variant) {
|
|
|
|
return getRandomItemStack(variant);
|
2019-02-06 21:24:22 +01:00
|
|
|
}
|
2018-09-12 01:29:49 +02:00
|
|
|
|
2019-02-06 21:24:22 +01:00
|
|
|
public ItemApple(String domain, String name) {
|
|
|
|
super(4, 3, false);
|
2019-02-07 10:46:59 +01:00
|
|
|
|
2019-02-06 21:24:22 +01:00
|
|
|
setTranslationKey(name);
|
2019-01-29 11:33:11 +01:00
|
|
|
|
2019-02-06 21:24:22 +01:00
|
|
|
if (!"minecraft".contentEquals(domain)) {
|
|
|
|
setRegistryName(domain, name);
|
|
|
|
}
|
|
|
|
}
|
2018-09-12 01:29:49 +02:00
|
|
|
|
2019-01-31 14:58:24 +01:00
|
|
|
@Override
|
|
|
|
public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
|
|
|
|
tooltip.add(getToxicityLevel(stack).getTooltip());
|
2019-01-27 16:34:12 +01:00
|
|
|
}
|
|
|
|
|
2019-01-31 14:58:24 +01:00
|
|
|
@Override
|
|
|
|
public Toxicity getToxicityLevel(ItemStack stack) {
|
|
|
|
return Toxicity.SAFE;
|
|
|
|
}
|
2018-09-12 01:29:49 +02:00
|
|
|
}
|