Unicopia/src/main/java/com/minelittlepony/unicopia/init/UItems.java

287 lines
14 KiB
Java
Raw Normal View History

package com.minelittlepony.unicopia.init;
2018-09-12 01:29:49 +02:00
2019-02-17 18:22:11 +01:00
import com.minelittlepony.unicopia.item.ItemAlicornAmulet;
2018-09-12 01:29:49 +02:00
import com.minelittlepony.unicopia.item.ItemApple;
2019-02-07 10:46:59 +01:00
import com.minelittlepony.unicopia.item.ItemAppleMultiType;
2019-01-09 16:23:22 +01:00
import com.minelittlepony.unicopia.item.ItemCereal;
import com.minelittlepony.unicopia.item.ItemCloud;
2018-09-20 22:49:10 +02:00
import com.minelittlepony.unicopia.item.ItemCurse;
2019-01-25 16:22:41 +01:00
import com.minelittlepony.unicopia.item.ItemFruitLeaves;
import com.minelittlepony.unicopia.item.ItemOfHolding;
2019-01-13 21:05:40 +01:00
import com.minelittlepony.unicopia.item.ItemRottenApple;
2018-09-20 22:49:10 +02:00
import com.minelittlepony.unicopia.item.ItemSpell;
2019-01-10 10:35:15 +01:00
import com.minelittlepony.unicopia.item.ItemSpellbook;
import com.minelittlepony.unicopia.item.ItemStaff;
2019-01-08 21:23:22 +01:00
import com.minelittlepony.unicopia.item.ItemStick;
import com.minelittlepony.unicopia.item.ItemTomato;
2019-01-08 21:23:22 +01:00
import com.minelittlepony.unicopia.item.ItemTomatoSeeds;
2019-01-13 21:05:40 +01:00
import com.minelittlepony.unicopia.item.ItemZapApple;
import com.minelittlepony.unicopia.item.UItemBlock;
import com.minelittlepony.unicopia.item.UItemMultiTexture;
2019-01-25 16:22:41 +01:00
import com.minelittlepony.unicopia.item.UItemDecoration;
import com.minelittlepony.unicopia.item.UItemSlab;
2018-09-20 22:49:10 +02:00
import com.minelittlepony.unicopia.spell.SpellRegistry;
2018-09-12 01:29:49 +02:00
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockFlower;
2018-09-20 22:49:10 +02:00
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.color.ItemColors;
import net.minecraft.creativetab.CreativeTabs;
2018-09-25 23:30:21 +02:00
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
2019-01-31 13:28:17 +01:00
import net.minecraft.item.EnumAction;
2018-09-12 01:29:49 +02:00
import net.minecraft.item.Item;
2019-02-07 18:18:51 +01:00
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemDoor;
2018-09-26 20:53:35 +02:00
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemSeedFood;
2018-09-12 01:29:49 +02:00
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.registries.IForgeRegistry;
import static com.minelittlepony.unicopia.Predicates.*;
2018-09-12 01:29:49 +02:00
import com.minelittlepony.unicopia.CloudType;
import com.minelittlepony.unicopia.UClient;
import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.edibles.BushToxicityDeterminent;
import com.minelittlepony.unicopia.edibles.CookedToxicityDeterminent;
import com.minelittlepony.unicopia.edibles.FlowerToxicityDeterminent;
import com.minelittlepony.unicopia.edibles.ItemEdible;
import com.minelittlepony.unicopia.edibles.Toxicity;
import com.minelittlepony.unicopia.edibles.UItemFoodDelegate;
import com.minelittlepony.unicopia.forgebullshit.BuildInTexturesBakery;
import com.minelittlepony.unicopia.forgebullshit.ItemModels;
import com.minelittlepony.unicopia.forgebullshit.OreReplacer;
2019-01-07 09:34:58 +01:00
import com.minelittlepony.unicopia.forgebullshit.RegistryLockSpinner;
2018-09-12 01:29:49 +02:00
public class UItems {
2019-02-07 11:14:41 +01:00
public static final ItemApple red_apple = new ItemApple("minecraft", "apple");
public static final ItemApple green_apple = new ItemApple(Unicopia.MODID, "apple_green");
public static final ItemApple sweet_apple = new ItemApple(Unicopia.MODID, "apple_sweet");
public static final ItemApple sour_apple = new ItemApple(Unicopia.MODID, "apple_sour");
2018-09-12 01:29:49 +02:00
2019-02-07 10:46:59 +01:00
public static final ItemAppleMultiType zap_apple = new ItemZapApple(Unicopia.MODID, "zap_apple")
.setSubTypes("zap_apple", "red", "green", "sweet", "sour", "zap");
2019-01-13 21:05:40 +01:00
public static final ItemApple rotten_apple = new ItemRottenApple(Unicopia.MODID, "rotten_apple");
public static final ItemApple cooked_zap_apple = new ItemApple(Unicopia.MODID, "cooked_zap_apple");
public static final Item cloud_matter = new Item()
.setCreativeTab(CreativeTabs.MATERIALS)
.setTranslationKey("cloud_matter")
.setRegistryName(Unicopia.MODID, "cloud_matter");
public static final Item dew_drop = new Item()
.setCreativeTab(CreativeTabs.MATERIALS)
.setTranslationKey("dew_drop")
.setRegistryName(Unicopia.MODID, "dew_drop");
public static final ItemCloud cloud_spawner = new ItemCloud(Unicopia.MODID, "cloud");
public static final Item cloud_block = new UItemMultiTexture(UBlocks.cloud, stack ->
CloudType.byMetadata(stack.getMetadata()).getTranslationKey(), INTERACT_WITH_CLOUDS)
.setRegistryName(Unicopia.MODID, "cloud_block");
2019-01-25 16:22:41 +01:00
public static final Item cloud_stairs = new UItemBlock(UBlocks.cloud_stairs, Unicopia.MODID, "cloud_stairs", INTERACT_WITH_CLOUDS);
2019-01-25 16:22:41 +01:00
public static final Item cloud_farmland = new UItemBlock(UBlocks.cloud_farmland, Unicopia.MODID, "cloud_farmland", INTERACT_WITH_CLOUDS);
2019-02-04 17:16:17 +01:00
public static final Item cloud_fence = new UItemBlock(UBlocks.cloud_fence, Unicopia.MODID, "cloud_fence", INTERACT_WITH_CLOUDS);
public static final Item cloud_banister = new UItemBlock(UBlocks.cloud_banister, Unicopia.MODID, "cloud_banister", INTERACT_WITH_CLOUDS);
2019-01-25 16:22:41 +01:00
public static final Item anvil = new UItemBlock(UBlocks.anvil, Unicopia.MODID, "anvil", INTERACT_WITH_CLOUDS)
.setTranslationKey("cloud_anvil");
public static final Item mist_door = new ItemDoor(UBlocks.mist_door)
.setTranslationKey("mist_door")
.setRegistryName(Unicopia.MODID, "mist_door");
2019-01-25 16:22:41 +01:00
public static final Item sugar_block = new UItemDecoration(UBlocks.sugar_block, Unicopia.MODID, "sugar_block");
2019-01-10 08:44:31 +01:00
public static final Item cloud_slab = new UItemSlab(UBlocks.cloud_slab, UBlocks.cloud_double_slab, INTERACT_WITH_CLOUDS)
.setTranslationKey("cloud_slab")
.setRegistryName(Unicopia.MODID, "cloud_slab");
2018-09-20 22:49:10 +02:00
public static final ItemSpell spell = new ItemSpell(Unicopia.MODID, "gem");
public static final ItemSpell curse = new ItemCurse(Unicopia.MODID, "corrupted_gem");
public static final ItemOfHolding bag_of_holding = new ItemOfHolding(Unicopia.MODID, "bag_of_holding");
2019-02-17 18:22:11 +01:00
public static final ItemAlicornAmulet alicorn_amulet = new ItemAlicornAmulet(Unicopia.MODID, "alicorn_amulet");
2019-01-10 10:35:15 +01:00
public static final ItemSpellbook spellbook = new ItemSpellbook(Unicopia.MODID, "spellbook");
public static final Item staff_meadow_brook = new ItemStaff(Unicopia.MODID, "staff_meadow_brook").setMaxDamage(2);
2019-01-10 10:35:15 +01:00
2018-09-26 20:53:35 +02:00
public static final Item alfalfa_seeds = new ItemSeedFood(1, 4, UBlocks.alfalfa, Blocks.FARMLAND)
2018-09-25 23:30:21 +02:00
.setTranslationKey("alfalfa_seeds")
2019-01-08 21:23:22 +01:00
.setRegistryName(Unicopia.MODID, "alfalfa_seeds")
.setCreativeTab(CreativeTabs.MATERIALS);
public static final ItemStick stick = new ItemStick();
2019-02-07 18:18:51 +01:00
public static final Item enchanted_torch = new ItemBlock(UBlocks.enchanted_torch)
.setRegistryName(Unicopia.MODID, "enchanted_torch");
2018-09-25 23:30:21 +02:00
2018-09-26 20:53:35 +02:00
public static final Item alfalfa_leaves = new ItemFood(1, 3, false)
.setTranslationKey("alfalfa_leaves")
.setRegistryName(Unicopia.MODID, "alfalfa_leaves");
public static final Item cereal = new ItemCereal(Unicopia.MODID, "cereal", 9, 0.8F).setSugarAmount(1);
public static final Item sugar_cereal = new ItemCereal(Unicopia.MODID, "sugar_cereal", 20, -2).setSugarAmount(110).setAlwaysEdible();
public static final ItemTomato tomato = new ItemTomato(Unicopia.MODID, "tomato", 4, 34);
public static final ItemTomato cloudsdale_tomato = new ItemTomato(Unicopia.MODID, "cloudsdale_tomato", 16, 4);
2019-01-08 21:23:22 +01:00
public static final ItemTomatoSeeds tomato_seeds = new ItemTomatoSeeds(Unicopia.MODID, "tomato_seeds");
2019-01-25 16:22:41 +01:00
public static final Item apple_seeds = new UItemDecoration(UBlocks.apple_tree, Unicopia.MODID, "apple_seeds");
public static final Item apple_leaves = new ItemFruitLeaves(UBlocks.apple_leaves, Unicopia.MODID, "apple_leaves");
public static final Item double_plant = new UItemFoodDelegate(Blocks.DOUBLE_PLANT, stack ->
BlockDoublePlant.EnumPlantType.byMetadata(stack.getMetadata()).getTranslationKey()
).setFoodDelegate(new ItemEdible(new BushToxicityDeterminent()))
.setTranslationKey("doublePlant");
public static final Item tall_grass = new UItemFoodDelegate(Blocks.TALLGRASS, stack -> {
switch (stack.getMetadata()) {
case 0: return "shrub";
case 1: return "grass";
case 2: return "fern";
default: return "";
}
}).setFoodDelegate(new ItemEdible(stack -> {
switch (stack.getMetadata()) {
default:
case 0: return Toxicity.SAFE;
case 1: return Toxicity.SAFE;
case 2: return Toxicity.SEVERE;
}
}));
public static final Item yellow_flower = new UItemFoodDelegate(Blocks.YELLOW_FLOWER, stack ->
BlockFlower.EnumFlowerType.getType(BlockFlower.EnumFlowerColor.YELLOW, stack.getMetadata()).getTranslationKey()
).setFoodDelegate(new ItemEdible(new FlowerToxicityDeterminent(BlockFlower.EnumFlowerColor.YELLOW)))
.setTranslationKey("flower");
public static final Item red_flower = new UItemFoodDelegate(Blocks.RED_FLOWER, stack ->
BlockFlower.EnumFlowerType.getType(BlockFlower.EnumFlowerColor.RED, stack.getMetadata()).getTranslationKey()
).setFoodDelegate(new ItemEdible(new FlowerToxicityDeterminent(BlockFlower.EnumFlowerColor.RED)))
.setTranslationKey("rose");
2019-01-31 13:18:27 +01:00
public static final Item daffodil_daisy_sandwich = new ItemEdible(Unicopia.MODID, "daffodil_daisy_sandwich", 3, 2, CookedToxicityDeterminent.instance)
.setHasSubtypes(true);
public static final Item hay_burger = new ItemEdible(Unicopia.MODID, "hay_burger", 3, 4, CookedToxicityDeterminent.instance)
.setHasSubtypes(true);
public static final Item hay_fries = new ItemEdible(Unicopia.MODID, "hay_fries", 1, 5, stack -> Toxicity.SAFE);
public static final Item salad = new ItemEdible(Unicopia.MODID, "salad", 4, 2, CookedToxicityDeterminent.instance)
2019-01-31 13:18:27 +01:00
.setHasSubtypes(true)
.setContainerItem(Items.BOWL);
public static final Item wheat_worms = new ItemEdible(Unicopia.MODID, "wheat_worms", 1, 0, stack -> Toxicity.SEVERE);
public static final Item mug = new Item()
.setTranslationKey("mug")
.setRegistryName(Unicopia.MODID, "mug")
.setCreativeTab(CreativeTabs.MATERIALS)
.setFull3D();
public static final Item apple_cider = new ItemEdible(Unicopia.MODID, "apple_cider", 4, 2, stack -> Toxicity.MILD)
2019-02-03 18:37:38 +01:00
.setUseAction(EnumAction.DRINK)
.setContainerItem(mug)
.setFull3D();
public static final Item juice = new ItemEdible(Unicopia.MODID, "juice", 2, 2, stack -> Toxicity.SAFE)
2019-01-31 13:28:17 +01:00
.setUseAction(EnumAction.DRINK)
.setContainerItem(Items.GLASS_BOTTLE);
public static final Item burned_juice = new ItemEdible(Unicopia.MODID, "burned_juice", 3, 1, stack -> Toxicity.FAIR)
2019-01-31 13:28:17 +01:00
.setUseAction(EnumAction.DRINK)
.setContainerItem(Items.GLASS_BOTTLE);
static void init(IForgeRegistry<Item> registry) {
RegistryLockSpinner.open(Item.REGISTRY, Items.class, r -> r
2019-02-07 11:14:41 +01:00
.replace(Items.APPLE, red_apple)
.replace(Items.STICK, stick)
.replace(Item.getItemFromBlock(Blocks.TALLGRASS), tall_grass)
.replace(Item.getItemFromBlock(Blocks.DOUBLE_PLANT), double_plant)
.replace(Item.getItemFromBlock(Blocks.YELLOW_FLOWER), yellow_flower)
.replace(Item.getItemFromBlock(Blocks.RED_FLOWER), red_flower));
2018-09-12 01:29:49 +02:00
registry.registerAll(
2019-02-07 11:14:41 +01:00
green_apple, sweet_apple, sour_apple,
cloud_spawner, dew_drop, cloud_matter, cloud_block,
2019-02-04 17:16:17 +01:00
cloud_stairs, cloud_slab, cloud_fence, cloud_banister,
cloud_farmland, mist_door, anvil,
2019-02-07 18:18:51 +01:00
bag_of_holding, spell, curse, spellbook, mug, enchanted_torch,
2019-02-17 18:22:11 +01:00
staff_meadow_brook, alicorn_amulet,
2019-01-10 10:35:15 +01:00
alfalfa_seeds, alfalfa_leaves,
cereal, sugar_cereal, sugar_block,
rotten_apple, zap_apple, cooked_zap_apple,
2019-01-10 10:35:15 +01:00
cloudsdale_tomato, tomato_seeds, tomato,
2019-01-08 21:23:22 +01:00
apple_seeds, apple_leaves,
2019-01-25 16:22:41 +01:00
daffodil_daisy_sandwich, hay_burger, hay_fries, salad, wheat_worms,
apple_cider, juice, burned_juice);
2018-09-12 01:29:49 +02:00
if (UClient.isClientSide()) {
ItemModels.registerAllVariants(cloud_slab, CloudType.getVariants("_cloud_slab"));
ItemModels.registerAllVariants(cloud_block, CloudType.getVariants("_cloud_block"));
ItemModels.registerAll(
cloud_spawner,
2019-02-07 11:14:41 +01:00
green_apple, sweet_apple, sour_apple,
2019-01-30 21:26:05 +01:00
zap_apple,
rotten_apple, cooked_zap_apple, dew_drop,
tomato, cloudsdale_tomato,
2018-09-12 01:29:49 +02:00
2019-02-04 17:16:17 +01:00
cloud_spawner, cloud_matter, cloud_stairs, cloud_fence, cloud_banister,
cloud_farmland, mist_door, anvil,
2019-02-07 18:18:51 +01:00
bag_of_holding, spell, curse, spellbook, mug, enchanted_torch,
2019-02-17 18:22:11 +01:00
staff_meadow_brook, alicorn_amulet,
alfalfa_seeds, alfalfa_leaves,
cereal, sugar_cereal, sugar_block,
tomato_seeds,
apple_seeds, apple_leaves,
daffodil_daisy_sandwich, hay_burger, hay_fries, salad, wheat_worms,
apple_cider, juice, burned_juice);
BuildInTexturesBakery.getBuiltInTextures().add(new ResourceLocation(Unicopia.MODID, "items/empty_slot_gem"));
}
registerFuels();
2018-09-12 01:29:49 +02:00
}
static void registerFuels() {
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(zap_apple), new ItemStack(cooked_zap_apple), 0.1F);
FurnaceRecipes.instance().addSmeltingRecipe(new ItemStack(juice), new ItemStack(burned_juice), 0);
}
2018-09-20 22:49:10 +02:00
public static void fixRecipes() {
new OreReplacer()
2019-02-07 11:14:41 +01:00
.registerAll(stack -> stack.getItem().getRegistryName().equals(red_apple.getRegistryName()))
.done();
}
@SideOnly(Side.CLIENT)
2018-09-20 22:49:10 +02:00
static void registerColors(ItemColors registry) {
registry.registerItemColorHandler((stack, tint) -> {
if (MAGI.test(Minecraft.getMinecraft().player)) {
2018-09-20 22:49:10 +02:00
return SpellRegistry.instance().getSpellTintFromStack(stack);
}
return 0xffffff;
}, spell, curse);
}
2018-09-12 01:29:49 +02:00
}