Added textures and translation keys for all the new items

This commit is contained in:
Sollace 2019-01-31 11:50:35 +02:00
parent 062ec0611b
commit 8478c0a0da
18 changed files with 77 additions and 27 deletions

View file

@ -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,

View file

@ -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;
} }

View file

@ -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() {

View file

@ -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);
} }

View file

@ -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);
}
} }

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "unicopia:items/mug"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 B

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B