Added textures and translation keys for all the new items
|
@ -146,31 +146,38 @@ public class UItems {
|
||||||
public static final Item daffodil_daisy_sandwich = new ItemEdible(Unicopia.MODID, "daffodil_daisy_sandwich", 3, 2, CookedToxicityDeterminent.instance);
|
public static final Item daffodil_daisy_sandwich = new ItemEdible(Unicopia.MODID, "daffodil_daisy_sandwich", 3, 2, CookedToxicityDeterminent.instance);
|
||||||
public static final Item hay_burger = new ItemEdible(Unicopia.MODID, "hay_burger", 3, 4, CookedToxicityDeterminent.instance);
|
public static final Item hay_burger = new ItemEdible(Unicopia.MODID, "hay_burger", 3, 4, CookedToxicityDeterminent.instance);
|
||||||
public static final Item hay_fries = new ItemEdible(Unicopia.MODID, "hay_fries", 1, 5, CookedToxicityDeterminent.instance);
|
public static final Item hay_fries = new ItemEdible(Unicopia.MODID, "hay_fries", 1, 5, CookedToxicityDeterminent.instance);
|
||||||
public static final Item salad = new ItemEdible(Unicopia.MODID, "salad", 4, 2, CookedToxicityDeterminent.instance);
|
public static final Item salad = new ItemEdible(Unicopia.MODID, "salad", 4, 2, CookedToxicityDeterminent.instance)
|
||||||
|
.setContainerItem(Items.BOWL);
|
||||||
|
|
||||||
public static final Item wheat_worms = new ItemEdible(Unicopia.MODID, "wheat_worms", 1, 0, stack -> Toxicity.SEVERE);
|
public static final Item wheat_worms = new ItemEdible(Unicopia.MODID, "wheat_worms", 1, 0, stack -> Toxicity.SEVERE);
|
||||||
|
|
||||||
public static final Item apple_cider = new ItemEdible(Unicopia.MODID, "apple_cider", 4, 2, stack -> Toxicity.FAIR);
|
public static final Item mug = new Item()
|
||||||
public static final Item juice = new ItemEdible(Unicopia.MODID, "juice", 2, 2, stack -> Toxicity.SAFE);
|
.setTranslationKey("mug")
|
||||||
public static final Item burned_juice = new ItemEdible(Unicopia.MODID, "burned_juice", 3, 1, stack -> Toxicity.FAIR);
|
.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)
|
||||||
|
.setContainerItem(mug)
|
||||||
|
.setFull3D();
|
||||||
|
public static final Item juice = new ItemEdible(Unicopia.MODID, "juice", 2, 2, stack -> Toxicity.SAFE)
|
||||||
|
.setContainerItem(Items.GLASS_BOTTLE);
|
||||||
|
public static final Item burned_juice = new ItemEdible(Unicopia.MODID, "burned_juice", 3, 1, stack -> Toxicity.FAIR)
|
||||||
|
.setContainerItem(Items.GLASS_BOTTLE);
|
||||||
|
|
||||||
static void registerItems(IForgeRegistry<Item> registry) {
|
static void registerItems(IForgeRegistry<Item> registry) {
|
||||||
RegistryLockSpinner.unlock(Item.REGISTRY);
|
RegistryLockSpinner.open(Item.REGISTRY, Items.class, r -> r
|
||||||
|
.replace(Items.APPLE, apple)
|
||||||
RegistryLockSpinner.commit(Item.REGISTRY, Items.APPLE, apple, Items.class);
|
.replace(Items.STICK, stick)
|
||||||
RegistryLockSpinner.commit(Item.REGISTRY, Items.STICK, stick, Items.class);
|
.replace(Item.getItemFromBlock(Blocks.DOUBLE_PLANT), double_plant)
|
||||||
RegistryLockSpinner.commit(Item.REGISTRY, Item.getItemFromBlock(Blocks.DOUBLE_PLANT), double_plant, Items.class);
|
.replace(Item.getItemFromBlock(Blocks.YELLOW_FLOWER), yellow_flower)
|
||||||
RegistryLockSpinner.commit(Item.REGISTRY, Item.getItemFromBlock(Blocks.YELLOW_FLOWER), yellow_flower, Items.class);
|
.replace(Item.getItemFromBlock(Blocks.RED_FLOWER), red_flower));
|
||||||
RegistryLockSpinner.commit(Item.REGISTRY, Item.getItemFromBlock(Blocks.RED_FLOWER), red_flower, Items.class);
|
|
||||||
|
|
||||||
RegistryLockSpinner.lock(Item.REGISTRY);
|
|
||||||
|
|
||||||
registry.registerAll(
|
registry.registerAll(
|
||||||
cloud_spawner, dew_drop, cloud_matter, cloud_block,
|
cloud_spawner, dew_drop, cloud_matter, cloud_block,
|
||||||
cloud_stairs, cloud_slab, cloud_farmland,
|
cloud_stairs, cloud_slab, cloud_farmland,
|
||||||
mist_door, anvil,
|
mist_door, anvil,
|
||||||
|
|
||||||
bag_of_holding, spell, curse, spellbook,
|
bag_of_holding, spell, curse, spellbook, mug,
|
||||||
|
|
||||||
alfalfa_seeds, alfalfa_leaves,
|
alfalfa_seeds, alfalfa_leaves,
|
||||||
cereal, sugar_cereal, sugar_block,
|
cereal, sugar_cereal, sugar_block,
|
||||||
|
@ -196,7 +203,7 @@ public class UItems {
|
||||||
tomato, cloudsdale_tomato,
|
tomato, cloudsdale_tomato,
|
||||||
|
|
||||||
cloud_spawner, cloud_matter, cloud_stairs, cloud_farmland, mist_door, anvil,
|
cloud_spawner, cloud_matter, cloud_stairs, cloud_farmland, mist_door, anvil,
|
||||||
bag_of_holding, spell, curse, spellbook,
|
bag_of_holding, spell, curse, spellbook, mug,
|
||||||
|
|
||||||
alfalfa_seeds, alfalfa_leaves,
|
alfalfa_seeds, alfalfa_leaves,
|
||||||
cereal, sugar_cereal, sugar_block,
|
cereal, sugar_cereal, sugar_block,
|
||||||
|
|
|
@ -57,6 +57,8 @@ public class ItemEdible extends ItemFood implements IEdible {
|
||||||
public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
|
public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
|
||||||
Toxicity toxicity = getToxicityLevel(stack);
|
Toxicity toxicity = getToxicityLevel(stack);
|
||||||
|
|
||||||
|
setAlwaysEdible();
|
||||||
|
|
||||||
TextFormatting color = toxicity.toxicWhenCooked() ? TextFormatting.RED : toxicity.toxicWhenRaw() ? TextFormatting.DARK_PURPLE : TextFormatting.GRAY;
|
TextFormatting color = toxicity.toxicWhenCooked() ? TextFormatting.RED : toxicity.toxicWhenRaw() ? TextFormatting.DARK_PURPLE : TextFormatting.GRAY;
|
||||||
|
|
||||||
tooltip.add(color + I18n.format(toxicity.getTranslationKey()));
|
tooltip.add(color + I18n.format(toxicity.getTranslationKey()));
|
||||||
|
@ -80,7 +82,14 @@ public class ItemEdible extends ItemFood implements IEdible {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ItemStack container = getContainerItem(stack);
|
||||||
|
|
||||||
|
if (!container.isEmpty()) {
|
||||||
|
return container;
|
||||||
|
}
|
||||||
|
|
||||||
stack.shrink(1);
|
stack.shrink(1);
|
||||||
|
|
||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import net.minecraft.potion.PotionEffect;
|
||||||
|
|
||||||
public enum Toxicity {
|
public enum Toxicity {
|
||||||
SAFE(0, 0),
|
SAFE(0, 0),
|
||||||
|
MILD(1, 160),
|
||||||
FAIR(1, 30),
|
FAIR(1, 30),
|
||||||
SEVERE(5, 160),
|
SEVERE(5, 160),
|
||||||
LETHAL(10, 900);
|
LETHAL(10, 900);
|
||||||
|
@ -19,6 +20,10 @@ public enum Toxicity {
|
||||||
this.duration = duration;
|
this.duration = duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isMild() {
|
||||||
|
return this == MILD;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean toxicWhenRaw() {
|
public boolean toxicWhenRaw() {
|
||||||
return isLethal() || this != SAFE;
|
return isLethal() || this != SAFE;
|
||||||
}
|
}
|
||||||
|
@ -32,7 +37,7 @@ public enum Toxicity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public PotionEffect getPoisonEffect() {
|
public PotionEffect getPoisonEffect() {
|
||||||
return new PotionEffect(MobEffects.POISON, duration, level);
|
return new PotionEffect(isMild() ? MobEffects.NAUSEA : MobEffects.POISON, duration, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTranslationKey() {
|
public String getTranslationKey() {
|
||||||
|
|
|
@ -44,7 +44,6 @@ public class UItemFoodDelegate extends ItemMultiTexture implements IEdible {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
|
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
|
||||||
foodItem.setAlwaysEdible();
|
|
||||||
return foodItem.onItemRightClick(worldIn, playerIn, handIn);
|
return foodItem.onItemRightClick(worldIn, playerIn, handIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.minelittlepony.unicopia.forgebullshit;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import net.minecraft.util.registry.RegistryNamespaced;
|
import net.minecraft.util.registry.RegistryNamespaced;
|
||||||
import net.minecraftforge.registries.ILockableRegistry;
|
import net.minecraftforge.registries.ILockableRegistry;
|
||||||
|
@ -9,7 +10,24 @@ import net.minecraftforge.registries.ILockableRegistry;
|
||||||
@FUF(reason = "Forge locks the registries. We need a way to unlock them.")
|
@FUF(reason = "Forge locks the registries. We need a way to unlock them.")
|
||||||
public final class RegistryLockSpinner {
|
public final class RegistryLockSpinner {
|
||||||
|
|
||||||
public static void unlock(RegistryNamespaced<?, ?> registry) {
|
public static <K, V> void open(RegistryNamespaced<K, V> registry, Class<?> containersClazz, Consumer<UnlockedRegistry<K, V>> action) {
|
||||||
|
unlock(registry);
|
||||||
|
|
||||||
|
try {
|
||||||
|
action.accept(new UnlockedRegistry<K, V>() {
|
||||||
|
@Override
|
||||||
|
public UnlockedRegistry<K, V> replace(V from, V to) {
|
||||||
|
commit(registry, from, to, containersClazz);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
} finally {
|
||||||
|
lock(registry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void unlock(RegistryNamespaced<?, ?> registry) {
|
||||||
if (registry instanceof ILockableRegistry) {
|
if (registry instanceof ILockableRegistry) {
|
||||||
try {
|
try {
|
||||||
Field f = registry.getClass().getDeclaredField("locked");
|
Field f = registry.getClass().getDeclaredField("locked");
|
||||||
|
@ -22,11 +40,9 @@ public final class RegistryLockSpinner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <K, V> void commit(RegistryNamespaced<K, V> registry, V from, V to, Class<?> inClass) {
|
private static <K, V> void commit(RegistryNamespaced<K, V> registry, V from, V to, Class<?> inClass) {
|
||||||
registry.register(registry.getIDForObject(from), registry.getNameForObject(from), to);
|
registry.register(registry.getIDForObject(from), registry.getNameForObject(from), to);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (Field i : inClass.getDeclaredFields()) {
|
for (Field i : inClass.getDeclaredFields()) {
|
||||||
try {
|
try {
|
||||||
if (i.get(null) == from) {
|
if (i.get(null) == from) {
|
||||||
|
@ -42,7 +58,7 @@ public final class RegistryLockSpinner {
|
||||||
private static boolean init = false;
|
private static boolean init = false;
|
||||||
private static Field modifieres = null;
|
private static Field modifieres = null;
|
||||||
|
|
||||||
protected static void initModifiersField(Field f) {
|
private static void initModifiersField() {
|
||||||
if (!init) {
|
if (!init) {
|
||||||
init = true;
|
init = true;
|
||||||
try {
|
try {
|
||||||
|
@ -55,8 +71,8 @@ public final class RegistryLockSpinner {
|
||||||
}
|
}
|
||||||
|
|
||||||
@FUF(reason = "Not exactly forge's fault, but it was would be nice of them to not leave these as final")
|
@FUF(reason = "Not exactly forge's fault, but it was would be nice of them to not leave these as final")
|
||||||
protected static Field makeNonFinal(Field f) throws IllegalArgumentException, IllegalAccessException {
|
private static Field makeNonFinal(Field f) throws IllegalArgumentException, IllegalAccessException {
|
||||||
initModifiersField(f);
|
initModifiersField();
|
||||||
if (Modifier.isFinal(f.getModifiers()) && modifieres != null) {
|
if (Modifier.isFinal(f.getModifiers()) && modifieres != null) {
|
||||||
modifieres.setInt(f, f.getModifiers() & ~Modifier.FINAL);
|
modifieres.setInt(f, f.getModifiers() & ~Modifier.FINAL);
|
||||||
}
|
}
|
||||||
|
@ -64,9 +80,14 @@ public final class RegistryLockSpinner {
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void lock(RegistryNamespaced<?, ?> registry) {
|
private static void lock(RegistryNamespaced<?, ?> registry) {
|
||||||
if (registry instanceof ILockableRegistry) {
|
if (registry instanceof ILockableRegistry) {
|
||||||
((ILockableRegistry) registry).lock();
|
((ILockableRegistry) registry).lock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface UnlockedRegistry<K, V> {
|
||||||
|
UnlockedRegistry<K, V> replace(V from, V to);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,12 +19,13 @@ public class ItemCereal extends ItemFood {
|
||||||
setTranslationKey(name);
|
setTranslationKey(name);
|
||||||
setRegistryName(domain, name);
|
setRegistryName(domain, name);
|
||||||
setMaxStackSize(1);
|
setMaxStackSize(1);
|
||||||
|
setContainerItem(Items.BOWL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack onItemUseFinish(ItemStack stack, World worldIn, EntityLivingBase entityLiving) {
|
public ItemStack onItemUseFinish(ItemStack stack, World worldIn, EntityLivingBase entityLiving) {
|
||||||
super.onItemUseFinish(stack, worldIn, entityLiving);
|
super.onItemUseFinish(stack, worldIn, entityLiving);
|
||||||
|
|
||||||
return new ItemStack(Items.BOWL);
|
return getContainerItem(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -83,6 +83,7 @@ item.hay_fries.name=Hay Fries
|
||||||
item.salad.name=Salad
|
item.salad.name=Salad
|
||||||
item.wheat_worms.name=Wheat Worms
|
item.wheat_worms.name=Wheat Worms
|
||||||
item.apple_cider.name=Apple Cider
|
item.apple_cider.name=Apple Cider
|
||||||
|
item.mug.name=Mug
|
||||||
|
|
||||||
entity.racing_cloud.name=Bucking Bronco
|
entity.racing_cloud.name=Bucking Bronco
|
||||||
entity.construction_cloud.name=Construction Cloud
|
entity.construction_cloud.name=Construction Cloud
|
||||||
|
@ -91,7 +92,8 @@ entity.spell.name=Magic
|
||||||
entity.spellbook.name=Spellbook
|
entity.spellbook.name=Spellbook
|
||||||
|
|
||||||
toxicity.safe.name=Safe
|
toxicity.safe.name=Safe
|
||||||
toxicity.fair.name=Fair
|
toxicity.mild.name=Mildly Toxic
|
||||||
|
toxicity.fair.name=Fairly Toxic
|
||||||
toxicity.severe.name=Toxic
|
toxicity.severe.name=Toxic
|
||||||
toxicity.lethal.name=Lethal
|
toxicity.lethal.name=Lethal
|
||||||
|
|
||||||
|
|
6
src/main/resources/assets/unicopia/models/item/mug.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "unicopia:items/mug"
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 3 KiB |
After Width: | Height: | Size: 197 B |
After Width: | Height: | Size: 3.2 KiB |
BIN
src/main/resources/assets/unicopia/textures/items/hay_burger.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
src/main/resources/assets/unicopia/textures/items/hay_fries.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
src/main/resources/assets/unicopia/textures/items/juice.png
Normal file
After Width: | Height: | Size: 271 B |
BIN
src/main/resources/assets/unicopia/textures/items/mug.png
Normal file
After Width: | Height: | Size: 3 KiB |
BIN
src/main/resources/assets/unicopia/textures/items/salad.png
Normal file
After Width: | Height: | Size: 314 B |
Before Width: | Height: | Size: 253 B After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 528 B |