mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-23 21:38:00 +01:00
Fixed models for toxicity variants
This commit is contained in:
parent
ddf48c7fd0
commit
a3232bc263
4 changed files with 52 additions and 5 deletions
|
@ -6,6 +6,7 @@ import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.minelittlepony.unicopia.Race;
|
import com.minelittlepony.unicopia.Race;
|
||||||
|
import com.minelittlepony.unicopia.forgebullshit.IMultiItem;
|
||||||
import com.minelittlepony.unicopia.player.PlayerSpeciesList;
|
import com.minelittlepony.unicopia.player.PlayerSpeciesList;
|
||||||
|
|
||||||
import net.minecraft.advancements.CriteriaTriggers;
|
import net.minecraft.advancements.CriteriaTriggers;
|
||||||
|
@ -16,6 +17,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.init.MobEffects;
|
import net.minecraft.init.MobEffects;
|
||||||
import net.minecraft.init.SoundEvents;
|
import net.minecraft.init.SoundEvents;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemFood;
|
import net.minecraft.item.ItemFood;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.potion.PotionEffect;
|
import net.minecraft.potion.PotionEffect;
|
||||||
|
@ -27,7 +29,9 @@ import net.minecraft.util.SoundCategory;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class ItemEdible extends ItemFood implements IEdible {
|
public class ItemEdible extends ItemFood implements IEdible, IMultiItem {
|
||||||
|
|
||||||
|
private String translationKey;
|
||||||
|
|
||||||
private final IEdible toxicityDeterminant;
|
private final IEdible toxicityDeterminant;
|
||||||
|
|
||||||
|
@ -46,6 +50,11 @@ public class ItemEdible extends ItemFood implements IEdible {
|
||||||
toxicityDeterminant = mapper;
|
toxicityDeterminant = mapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Item setTranslationKey(String key) {
|
||||||
|
translationKey = key;
|
||||||
|
return super.setTranslationKey(key);
|
||||||
|
}
|
||||||
|
|
||||||
protected void onFoodEaten(ItemStack stack, World worldIn, EntityPlayer player) {
|
protected void onFoodEaten(ItemStack stack, World worldIn, EntityPlayer player) {
|
||||||
Race race = PlayerSpeciesList.instance().getPlayer(player).getPlayerSpecies();
|
Race race = PlayerSpeciesList.instance().getPlayer(player).getPlayerSpecies();
|
||||||
Toxicity toxicity = (race.isDefault() || race == Race.CHANGELING) ? Toxicity.LETHAL : getToxicityLevel(stack);
|
Toxicity toxicity = (race.isDefault() || race == Race.CHANGELING) ? Toxicity.LETHAL : getToxicityLevel(stack);
|
||||||
|
@ -57,8 +66,6 @@ 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()));
|
||||||
|
@ -135,4 +142,14 @@ public class ItemEdible extends ItemFood implements IEdible {
|
||||||
public Toxicity getToxicityLevel(ItemStack stack) {
|
public Toxicity getToxicityLevel(ItemStack stack) {
|
||||||
return toxicityDeterminant.getToxicityLevel(stack);
|
return toxicityDeterminant.getToxicityLevel(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getVariants() {
|
||||||
|
return Toxicity.getVariants(translationKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean variantsAreHidden() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,4 +47,14 @@ public enum Toxicity {
|
||||||
public static Toxicity byMetadata(int metadata) {
|
public static Toxicity byMetadata(int metadata) {
|
||||||
return values[metadata % values.length];
|
return values[metadata % values.length];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String[] getVariants(String key) {
|
||||||
|
String[] result = new String[values.length];
|
||||||
|
|
||||||
|
for (int i = 0; i < result.length; i++) {
|
||||||
|
result[i] = values[i].name() + key;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,4 +9,12 @@ public interface IMultiItem {
|
||||||
* Used to register models and textures on the client.
|
* Used to register models and textures on the client.
|
||||||
*/
|
*/
|
||||||
String[] getVariants();
|
String[] getVariants();
|
||||||
|
|
||||||
|
default boolean variantsAreHidden() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
default int getMaxMetadata() {
|
||||||
|
return getVariants().length;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,13 +12,25 @@ public class ItemModels {
|
||||||
public static void registerAll(Item...items) {
|
public static void registerAll(Item...items) {
|
||||||
for (Item i : items) {
|
for (Item i : items) {
|
||||||
if (i instanceof IMultiItem && i.getHasSubtypes()) {
|
if (i instanceof IMultiItem && i.getHasSubtypes()) {
|
||||||
registerAllVariants(i, ((IMultiItem)i).getVariants());
|
IMultiItem multi = (IMultiItem)i;
|
||||||
|
|
||||||
|
if (multi.variantsAreHidden()) {
|
||||||
|
registerAll(i, multi.getMaxMetadata(), new ModelResourceLocation(i.getRegistryName().toString()));
|
||||||
|
} else {
|
||||||
|
registerAllVariants(i, multi.getVariants());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
ModelLoader.setCustomModelResourceLocation(i, 0, new ModelResourceLocation(i.getRegistryName().toString()));
|
registerAll(i, 1, new ModelResourceLocation(i.getRegistryName().toString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void registerAll(Item item, int maxMeta, ModelResourceLocation resource) {
|
||||||
|
for (int i = 0; i < maxMeta; i++) {
|
||||||
|
ModelLoader.setCustomModelResourceLocation(item, i, resource);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a model for the given item and all associated variants.
|
* Registers a model for the given item and all associated variants.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue