From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../AlchemyRegistry$AppraisalItemStack.class | Bin 0 -> 1940 bytes .../fbs/alchemy/AlchemyRegistry$ItemPair.class | Bin 0 -> 805 bytes .../alchemy/AlchemyRegistry$ProductExpPair.class | Bin 0 -> 869 bytes .../fbs/alchemy/AlchemyRegistry$Recipe.class | Bin 0 -> 1884 bytes .../AlchemyRegistry$WeightedItemStack.class | Bin 0 -> 825 bytes .../jp/plusplus/fbs/alchemy/AlchemyRegistry.class | Bin 0 -> 27154 bytes .../jp/plusplus/fbs/alchemy/AlchemyRegistry.java | 907 +++++++++++++++++++++ .../jp/plusplus/fbs/alchemy/IAlchemyMaterial.class | Bin 0 -> 395 bytes .../jp/plusplus/fbs/alchemy/IAlchemyMaterial.java | 24 + .../jp/plusplus/fbs/alchemy/IAlchemyProduct.class | Bin 0 -> 582 bytes .../jp/plusplus/fbs/alchemy/IAlchemyProduct.java | 35 + .../alchemy/ItemAlchemyIntermediateMaterial.class | Bin 0 -> 6014 bytes .../alchemy/ItemAlchemyIntermediateMaterial.java | 143 ++++ .../plusplus/fbs/alchemy/ItemAlchemyMaterial.class | Bin 0 -> 9683 bytes .../plusplus/fbs/alchemy/ItemAlchemyMaterial.java | 307 +++++++ .../plusplus/fbs/alchemy/ItemAlchemyPotion.class | Bin 0 -> 6777 bytes .../jp/plusplus/fbs/alchemy/ItemAlchemyPotion.java | 149 ++++ .../fbs/alchemy/ItemEatableAlchemyMaterial.class | Bin 0 -> 7428 bytes .../fbs/alchemy/ItemEatableAlchemyMaterial.java | 178 ++++ .../jp/plusplus/fbs/alchemy/ItemRecipeBook$1.class | Bin 0 -> 1360 bytes .../jp/plusplus/fbs/alchemy/ItemRecipeBook.class | Bin 0 -> 3797 bytes .../jp/plusplus/fbs/alchemy/ItemRecipeBook.java | 68 ++ .../characteristic/CharacteristicBase$Type.class | Bin 0 -> 2524 bytes .../characteristic/CharacteristicBase.class | Bin 0 -> 2889 bytes .../alchemy/characteristic/CharacteristicBase.java | 114 +++ .../CharacteristicCleverness$Gain.class | Bin 0 -> 478 bytes .../CharacteristicCleverness$Lose.class | Bin 0 -> 478 bytes .../characteristic/CharacteristicCleverness.class | Bin 0 -> 2474 bytes .../characteristic/CharacteristicCleverness.java | 45 + .../CharacteristicConfusion$Gain.class | Bin 0 -> 474 bytes .../CharacteristicConfusion$Lose.class | Bin 0 -> 474 bytes .../characteristic/CharacteristicConfusion.class | Bin 0 -> 2383 bytes .../characteristic/CharacteristicConfusion.java | 43 + .../characteristic/CharacteristicExp$Gain.class | Bin 0 -> 450 bytes .../characteristic/CharacteristicExp$Lose.class | Bin 0 -> 450 bytes .../alchemy/characteristic/CharacteristicExp.class | Bin 0 -> 2382 bytes .../alchemy/characteristic/CharacteristicExp.java | 53 ++ .../characteristic/CharacteristicHealth$Gain.class | Bin 0 -> 462 bytes .../characteristic/CharacteristicHealth$Lose.class | Bin 0 -> 462 bytes .../characteristic/CharacteristicHealth.class | Bin 0 -> 2228 bytes .../characteristic/CharacteristicHealth.java | 45 + .../characteristic/CharacteristicLook.class | Bin 0 -> 1027 bytes .../alchemy/characteristic/CharacteristicLook.java | 25 + .../characteristic/CharacteristicPoison$Gain.class | Bin 0 -> 462 bytes .../characteristic/CharacteristicPoison$Lose.class | Bin 0 -> 462 bytes .../characteristic/CharacteristicPoison.class | Bin 0 -> 2365 bytes .../characteristic/CharacteristicPoison.java | 44 + .../characteristic/CharacteristicPower$Gain.class | Bin 0 -> 458 bytes .../characteristic/CharacteristicPower$Lose.class | Bin 0 -> 458 bytes .../characteristic/CharacteristicPower.class | Bin 0 -> 2458 bytes .../characteristic/CharacteristicPower.java | 50 ++ .../characteristic/CharacteristicQuality.class | Bin 0 -> 1036 bytes .../characteristic/CharacteristicQuality.java | 24 + .../characteristic/CharacteristicSanity$Gain.class | Bin 0 -> 462 bytes .../characteristic/CharacteristicSanity$Lose.class | Bin 0 -> 462 bytes .../characteristic/CharacteristicSanity.class | Bin 0 -> 2235 bytes .../characteristic/CharacteristicSanity.java | 45 + .../characteristic/CharacteristicSpeed$Gain.class | Bin 0 -> 458 bytes .../characteristic/CharacteristicSpeed$Lose.class | Bin 0 -> 458 bytes .../characteristic/CharacteristicSpeed.class | Bin 0 -> 2431 bytes .../characteristic/CharacteristicSpeed.java | 48 ++ .../CharacteristicStamina$Gain.class | Bin 0 -> 466 bytes .../CharacteristicStamina$Lose.class | Bin 0 -> 466 bytes .../characteristic/CharacteristicStamina.class | Bin 0 -> 3079 bytes .../characteristic/CharacteristicStamina.java | 55 ++ .../characteristic/CharacteristicWater$Gain.class | Bin 0 -> 458 bytes .../characteristic/CharacteristicWater$Lose.class | Bin 0 -> 458 bytes .../characteristic/CharacteristicWater.class | Bin 0 -> 3409 bytes .../characteristic/CharacteristicWater.java | 59 ++ .../characteristic/CharacteristicWeight.class | Bin 0 -> 1013 bytes .../characteristic/CharacteristicWeight.java | 23 + 71 files changed, 2484 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$AppraisalItemStack.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$ItemPair.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$ProductExpPair.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$Recipe.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$WeightedItemStack.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/IAlchemyMaterial.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/IAlchemyMaterial.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/IAlchemyProduct.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/IAlchemyProduct.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyIntermediateMaterial.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyIntermediateMaterial.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyMaterial.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyMaterial.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyPotion.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyPotion.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemEatableAlchemyMaterial.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemEatableAlchemyMaterial.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook$1.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase$Type.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness$Gain.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness$Lose.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion$Gain.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion$Lose.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp$Gain.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp$Lose.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth$Gain.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth$Lose.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicLook.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicLook.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison$Gain.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison$Lose.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower$Gain.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower$Lose.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicQuality.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicQuality.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity$Gain.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity$Lose.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed$Gain.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed$Lose.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina$Gain.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina$Lose.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater$Gain.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater$Lose.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater.java create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWeight.class create mode 100644 src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWeight.java (limited to 'src/main/java/jp/plusplus/fbs/alchemy') diff --git a/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$AppraisalItemStack.class b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$AppraisalItemStack.class new file mode 100644 index 0000000..76135d6 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$AppraisalItemStack.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$ItemPair.class b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$ItemPair.class new file mode 100644 index 0000000..8327cd1 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$ItemPair.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$ProductExpPair.class b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$ProductExpPair.class new file mode 100644 index 0000000..824df68 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$ProductExpPair.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$Recipe.class b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$Recipe.class new file mode 100644 index 0000000..10956fd Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$Recipe.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$WeightedItemStack.class b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$WeightedItemStack.class new file mode 100644 index 0000000..d7f8094 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry$WeightedItemStack.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry.class b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry.class new file mode 100644 index 0000000..db67bb8 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry.java b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry.java new file mode 100644 index 0000000..c14952b --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/AlchemyRegistry.java @@ -0,0 +1,907 @@ +package jp.plusplus.fbs.alchemy; + +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.alchemy.characteristic.*; +import jp.plusplus.fbs.item.ItemCore; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.StatCollector; +import net.minecraftforge.oredict.OreDictionary; + +import java.util.*; + +/** + * Created by plusplus_F on 2015/09/08. + * たぶん錬金術はわりと規模がでかくなると思うんで分離 + */ +public class AlchemyRegistry { + //特性 + private ArrayList> characteristics=new ArrayList>(); + private HashMap, Integer> characteristicsIdMap=new HashMap, Integer>(); + //素材 + private HashMap> materials=new HashMap>(); + private HashMap> materialNames=new HashMap>(); + //鑑定 + private HashMap> appraisalItems=new HashMap>(); + //調合 + private ArrayList recipes=new ArrayList(); + private ArrayList productExpPairs=new ArrayList(); + //カゴ + private ArrayList basketItems=new ArrayList(); + + private static AlchemyRegistry instance=new AlchemyRegistry(); + private static Random rand=new Random(); + + private AlchemyRegistry(){} + + public static Random getRandom(){ return instance.rand; } + + + public static void RegisterAlchemy(){ + //------------------------------------------------------------------------------------------------------- + // 特性 + //------------------------------------------------------------------------------------------------------- + AddCharacteristic(CharacteristicSanity.Gain.class); + AddCharacteristic(CharacteristicSanity.Lose.class); + AddCharacteristic(CharacteristicHealth.Gain.class); + AddCharacteristic(CharacteristicHealth.Lose.class); + if(FBS.cooperatesSS2){ + AddCharacteristic(CharacteristicWater.Gain.class); + AddCharacteristic(CharacteristicWater.Lose.class); + AddCharacteristic(CharacteristicStamina.Gain.class); + AddCharacteristic(CharacteristicStamina.Lose.class); + } + AddCharacteristic(CharacteristicExp.Gain.class); + AddCharacteristic(CharacteristicExp.Lose.class); + AddCharacteristic(CharacteristicLook.class); + AddCharacteristic(CharacteristicWeight.class); + AddCharacteristic(CharacteristicQuality.class); + AddCharacteristic(CharacteristicCleverness.Gain.class); + AddCharacteristic(CharacteristicPoison.Gain.class); + AddCharacteristic(CharacteristicPoison.Lose.class); + AddCharacteristic(CharacteristicPower.Gain.class); + AddCharacteristic(CharacteristicPower.Lose.class); + AddCharacteristic(CharacteristicSpeed.Gain.class); + AddCharacteristic(CharacteristicSpeed.Lose.class); + AddCharacteristic(CharacteristicConfusion.Gain.class); + AddCharacteristic(CharacteristicConfusion.Lose.class); + + //------------------------------------------------------------------------------------------------------- + // 鑑定 + //------------------------------------------------------------------------------------------------------- + RegisterAppraisal(new ItemStack(Items.potionitem), new ItemStack(ItemCore.alchemyMaterial, 1, 0), 63); + RegisterAppraisal(new ItemStack(Items.potionitem), new ItemStack(ItemCore.alchemyMaterial, 1, 1), 1); + RegisterAppraisal(new ItemStack(Items.lava_bucket), new ItemStack(ItemCore.alchemyMaterial, 1, 2), 1); + + RegisterAppraisal("treeLeaves", new ItemStack(ItemCore.alchemyMaterial, 1, 3), 63); + RegisterAppraisal("treeLeaves", new ItemStack(ItemCore.alchemyMaterial, 1, 6), 1); + RegisterAppraisal(new ItemStack(Items.stick), new ItemStack(ItemCore.alchemyMaterial, 1, 4), 63); + RegisterAppraisal(new ItemStack(Items.stick), new ItemStack(ItemCore.alchemyMaterial, 1, 7), 1); + + for(int i=0;i45)){ + RegisterAppraisal(new ItemStack(ItemCore.mushroomUnknown), new ItemStack(ItemCore.alchemyMaterial, 1, i), 10); + } + } + RegisterAppraisal(new ItemStack(ItemCore.herbUnknown), new ItemStack(ItemCore.alchemyMaterial, 1, 18), 60); + RegisterAppraisal(new ItemStack(ItemCore.herbUnknown), new ItemStack(ItemCore.alchemyMaterial, 1, 36), 3); + RegisterAppraisal(new ItemStack(ItemCore.herbUnknown), new ItemStack(ItemCore.alchemyMaterial, 1, 37), 3); + + RegisterAppraisal(new ItemStack(ItemCore.mushroomUnknown), new ItemStack(ItemCore.alchemyMaterial, 1, 25), 50); + RegisterAppraisal(new ItemStack(ItemCore.mushroomUnknown), new ItemStack(ItemCore.alchemyMaterial, 1, 42), 3); + RegisterAppraisal(new ItemStack(ItemCore.mushroomUnknown), new ItemStack(ItemCore.alchemyMaterial, 1, 43), 3); + RegisterAppraisal(new ItemStack(ItemCore.mushroomUnknown), new ItemStack(ItemCore.alchemyMaterial, 1, 44), 3); + RegisterAppraisal(new ItemStack(ItemCore.mushroomUnknown), new ItemStack(ItemCore.alchemyMaterial, 1, 45), 3); + + for(int i=0;i chara){ + instance.characteristics.add(chara); + instance.characteristicsIdMap.put(chara, instance.characteristics.size()-1); + } + + /** + * 特性からIdを得る + * @param chara + * @return + */ + public static int GetCharacteristicId(Class chara){ + if(!instance.characteristicsIdMap.containsKey(chara)){ + AddCharacteristic(chara); + } + + return instance.characteristicsIdMap.get(chara); + } + + /** + * Idから特性を得る + * @param id + * @return + */ + public static Class GetCharacteristicFromId(int id){ + if(id<0 || id>=instance.characteristics.size()) return null; + return instance.characteristics.get(id); + } + + /** + * 特性のリストをnbtに書き込む + * @param nbt + * @param list + */ + public static void WriteCharacteristicToNBT(NBTTagCompound nbt, ArrayList list){ + NBTTagList tags=new NBTTagList(); + for(CharacteristicBase cb : list){ + NBTTagCompound tag=new NBTTagCompound(); + tag.setInteger("id", cb.getId()); + cb.writeToNBT(tag); + tags.appendTag(tag); + } + + nbt.setTag("characteristics", tags); + nbt.setBoolean("appraisal", true); + } + + /** + * nbtから特性リストを得る + * @param nbt + * @return + */ + public static ArrayList ReadCharacteristicFromNBT(NBTTagCompound nbt){ + ArrayList ret=new ArrayList(); + + if(nbt!=null && nbt.hasKey("characteristics")){ + NBTTagList tags=(NBTTagList)nbt.getTag("characteristics"); + for(int i=0;i cbs=AlchemyRegistry.ReadCharacteristicFromNBT(itemStack.getTagCompound()); + + for(CharacteristicBase cb : cbs){ + list.add(cb.getNameColor()+"-"+cb.getLocalizedName()+":"+cb.getLocalizedEffectValue()); + } + } + } + + //-------------------------------------------------------------------------------------- + // 素材 + //-------------------------------------------------------------------------------------- + + /** + * 素材としてアイテムスタックを登録する + * @param name + * @param itemStack + */ + public static void RegisterMaterial(String name, ItemStack itemStack){ + if(!instance.materials.containsKey(name)){ + ArrayList list=new ArrayList(); + instance.materials.put(name, list); + } + + instance.materials.get(name).add(itemStack); + RegisterMaterialName(itemStack, name); + } + + /** + * アイテムスタックがその素材として使えるかを返す + * @param name + * @param itemStack + * @return + */ + public static boolean IsMatching(String name, ItemStack itemStack){ + if(!instance.materials.containsKey(name)) return false; + ArrayList list=instance.materials.get(name); + + for(ItemStack item : list){ + if(item.isItemEqual(itemStack)){ + return true; + } + } + + return false; + } + + private static Map.Entry> cachedMaterial; + /** + * アイテムスタックの持つ素材名を得る + * @param itemStack + * @return + */ + public static ArrayList GetMaterialNames(ItemStack itemStack){ + if(cachedMaterial!=null && cachedMaterial.getKey().isItemEqual(itemStack)){ + return cachedMaterial.getValue(); + } + + for(Map.Entry> e : instance.materialNames.entrySet()){ + if(e.getKey().isItemEqual(itemStack)){ + cachedMaterial=e; + return e.getValue(); + } + } + return null; + } + private static void RegisterMaterialName(ItemStack itemStack, String name){ + ArrayList list=GetMaterialNames(itemStack); + + if(list!=null){ + //素材名リストがある場合直接追加 + list.add(name); + } + else{ + //素材名リストがない場合リスト作ってマップに追加 + list=new ArrayList(); + list.add(name); + + instance.materialNames.put(itemStack, list); + } + } + + /** + * listに素材名一覧を追加する + * @param itemStack + * @param list + * @param flag + */ + public static void AddMaterialInfo(ItemStack itemStack, List list, boolean flag){ + list.add(StatCollector.translateToLocal("alchemy.fbs.material")); + ArrayList names= AlchemyRegistry.GetMaterialNames(itemStack); + if(names!=null && !names.isEmpty()){ + for(String str : names){ + list.add("-"+str); + } + } + } + //-------------------------------------------------------------------------------------- + // 鑑定 + //-------------------------------------------------------------------------------------- + + /** + * 鑑定アイテムを登録する + * @param input + * @param output 鑑定品(ItemはIAlchemyMaterialを継承しておくこと) + * @param weight 出現重み + */ + public static void RegisterAppraisal(ItemStack input, ItemStack output, int weight){ + AppraisalItemStack ais=new AppraisalItemStack(input); + ArrayList list=GetAppraisals(ais); + list.add(new WeightedItemStack(weight, output)); + } + /** + * 鑑定アイテムを登録する(鉱石辞書編) + * @param input + * @param output 鑑定品(ItemはIAlchemyMaterialを継承しておくこと) + * @param weight 出現重み + */ + public static void RegisterAppraisal(String input, ItemStack output, int weight){ + AppraisalItemStack ais=new AppraisalItemStack(input); + ArrayList list=GetAppraisals(ais); + list.add(new WeightedItemStack(weight, output)); + } + private static ArrayList GetAppraisals(AppraisalItemStack ais){ + ArrayList list; + + for(AppraisalItemStack aiss : instance.appraisalItems.keySet()){ + if(aiss.equals(ais)){ + return instance.appraisalItems.get(aiss); + } + } + list=new ArrayList(); + instance.appraisalItems.put(ais, list); + return list; + } + + public static ArrayList GetAppraisalList(ItemStack input){ + for(AppraisalItemStack aiss : instance.appraisalItems.keySet()){ + if(aiss.isItemEqual(input)) return instance.appraisalItems.get(aiss); + } + return null; + } + public static ArrayList GetAlllAppraisal(){ + ArrayList ret=new ArrayList(); + for(Map.Entry> e : instance.appraisalItems.entrySet()){ + for(WeightedItemStack wis : e.getValue()){ + ret.add(new ItemPair(e.getKey().getItemStack(), wis.getItemStack())); + } + } + return ret; + } + + /** + * そのアイテムが鑑定できるか判定する + * @param input + * @return + */ + public static boolean CanAppraisal(ItemStack input){ + NBTTagCompound nbt=input.getTagCompound(); + if(nbt!=null && nbt.getBoolean("appraisal")) return false; + + return GetAppraisalList(input)!=null; + } + + /** + * 鑑定したアイテムを得る。この時ランダムで特性が付与される。 + * @param input + * @return 鑑定できないアイテムであればnull + */ + public static ItemStack GetRandomAppraisal(ItemStack input){ + ArrayList list=GetAppraisalList(input); + if(list.isEmpty()) return null; + + int ws=0; + for(WeightedItemStack wis : list){ + ws+=wis.getWeight(); + } + + int r=instance.rand.nextInt(ws); + ws=0; + for(int i=0;i cList=((IAlchemyMaterial)ret.getItem()).addCharacteristics(ret, instance.rand); + if(cList!=null && !cList.isEmpty()){ + ret.setTagCompound(new NBTTagCompound()); + WriteCharacteristicToNBT(ret.getTagCompound(), cList); + // FBS.logger.info("written"); + } + //FBS.logger.info(cList.toString()); + + return ret; + } + ws+=wis.getWeight(); + } + + return null; + } + + + //-------------------------------------------------------------------------------------- + // 調合 + //-------------------------------------------------------------------------------------- + private static Recipe cachedRecipe; + public static void RegisterRecipe(ItemStack key, ItemStack output, int lv, float prob, double exp, String ... materials){ + instance.recipes.add(new Recipe(lv, prob, key, output, materials)); + RegisterProductExpPair(output, exp); + } + public static Recipe GetRecipe(ItemStack key){ + if(cachedRecipe!=null && cachedRecipe.isKey(key)) return cachedRecipe; + + for(Recipe r : instance.recipes){ + if(r.isKey(key)){ + cachedRecipe=r; + return cachedRecipe; + } + } + + return null; + } + /** + * レシピと投入済み素材リストから、inputが未投入の素材か判定する + * @param key + * @param input + * @param inputMaterials + * @return + */ + public static boolean IsMaterial(ItemStack key, ItemStack input, ArrayList inputMaterials){ + //レシピを得る + Recipe r=GetRecipe(key); + return IsMaterial(r, input, inputMaterials); + } + public static boolean IsMaterial(Recipe recipe, ItemStack input, ArrayList inputMaterials){ + if(recipe==null) return false; + + //matから未投入素材リストを得る + LinkedList mats=recipe.getMaterialList(); + LinkedList tmp=new LinkedList(inputMaterials); + for(int i=0;i inputMaterials){ + return IsSatisfied(GetRecipe(key), inputMaterials); + } + public static boolean IsSatisfied(Recipe recipe, ArrayList inputMaterials){ + if(recipe==null) return false; + + //matから未投入素材リストを得る + LinkedList mats=recipe.getMaterialList(); + + //投入素材数が違うのに条件を満たしているはずがないだろ! + if(inputMaterials.size()!=mats.size()){ + return false; + } + + //投入素材リストを走査し、必要素材リストの中身を抜いていく + LinkedList tmp=new LinkedList(inputMaterials); + for(int i=0;i inputMaterials){ + Recipe r=GetRecipe(key); + ItemStack ret=r.getProduct(); + + IAlchemyProduct prod=((IAlchemyProduct) ret.getItem()); + ArrayList characteristics;//完成品の持つ特性 + + //------------------------初期特性------------------------------ + characteristics=prod.getDefaultCharacteristics(ret, instance.rand); + + //-----------------------引継ぎ特性----------------------------- + LinkedList inherits=new LinkedList(); + for(ItemStack mat : inputMaterials){ + ArrayList aList=ReadCharacteristicFromNBT(mat.getTagCompound()); + for(CharacteristicBase cb : aList){ + if(prod.canInherit(ret, cb)) inherits.add(cb); + } + } + + //-----------------------引継ぎ判定----------------------------- + int max=prod.getMaxInheritAmount(ret); + for(int i=0;i inputMaterials){ + ItemStack ret=recipe.getProduct().copy(); + + IAlchemyProduct prod=((IAlchemyProduct) ret.getItem()); + ArrayList characteristics;//完成品の持つ特性 + + //------------------------初期特性------------------------------ + characteristics=prod.getDefaultCharacteristics(ret, instance.rand); + + //-----------------------引継ぎ特性----------------------------- + LinkedList inherits=new LinkedList(); + for(ItemStack mat : inputMaterials){ + ArrayList aList=ReadCharacteristicFromNBT(mat.getTagCompound()); + for(CharacteristicBase cb : aList){ + if(prod.canInherit(ret, cb)) inherits.add(cb); + } + } + + //-----------------------引継ぎ判定----------------------------- + int max=prod.getMaxInheritAmount(ret); + for(int i=0;i GetRecieps(){ + return instance.recipes; + } + + private static ProductExpPair cachedPEP; + public static void RegisterProductExpPair(ItemStack p, double e){ + instance.productExpPairs.add(new ProductExpPair(p, e)); + } + public static double GetProductExp(ItemStack p){ + if(cachedPEP!=null && cachedPEP.isItemEqual(p)){ + return cachedPEP.getExp(); + } + + for(ProductExpPair pep : instance.productExpPairs){ + if(pep.isItemEqual(p)){ + cachedPEP=pep; + return pep.getExp(); + } + } + + return 0; + } + + private static ItemStack cachedBasketItem; + public static void RegisterBasketItem(ItemStack itemStack){ + instance.basketItems.add(itemStack); + } + public static boolean isBasketItem(ItemStack itemStack){ + if(cachedBasketItem!=null && cachedBasketItem.isItemEqual(itemStack)) return true; + + for(ItemStack is : instance.basketItems){ + if(is.isItemEqual(itemStack)){ + cachedBasketItem=is; + return true; + } + } + return false; + } + + //------------------------------------------------------------------------------------- + public static class AppraisalItemStack{ + private boolean isOre; + private int oreId; + private ItemStack itemStack; + + public AppraisalItemStack(ItemStack item){ + isOre=false; + itemStack=item; + } + public AppraisalItemStack(String oreId){ + isOre=true; + this.oreId= OreDictionary.getOreID(oreId); + } + public boolean isItemEqual(ItemStack m){ + if (isOre){ + int[] ids=OreDictionary.getOreIDs(m); + for(int i : ids){ + if(i==oreId) return true; + } + return false; + } + else{ + return itemStack.isItemEqual(m); + } + } + + public ItemStack getItemStack(){ + if(itemStack==null && isOre){ + itemStack=OreDictionary.getOres(OreDictionary.getOreName(oreId)).get(0).copy(); + } + return itemStack; + } + + @Override + public boolean equals(Object obj){ + if(obj instanceof AppraisalItemStack){ + AppraisalItemStack ais=(AppraisalItemStack)obj; + if(isOre!=ais.isOre) return false; + return isOre?oreId==ais.oreId:itemStack.isItemEqual(ais.itemStack); + } + return false; + } + } + public static class WeightedItemStack{ + private int weight; + private ItemStack itemStack; + + public WeightedItemStack(int w, ItemStack stack){ + weight=w; + itemStack=stack; + } + + public int getWeight(){ return weight; } + public ItemStack getItemStack(){ return itemStack; } + + } + public static class Recipe{ + protected int level; + protected float prob; + protected ItemStack key; + protected ItemStack output; + protected String[] materials; + + public Recipe(int level, float prob, ItemStack key, ItemStack output, String ... materials){ + this.level=level; + this.prob=prob; + this.key=key; + this.output=output; + this.materials=materials; + } + + public ItemStack getKey(){ return key; } + public boolean isKey(ItemStack itemStack){ + return key.isItemEqual(itemStack); + } + public ItemStack getProduct(){ + return output; + } + public int getLevel(){ return level; } + public float getProb(){ return prob; } + + public LinkedList getMaterialList(){ + LinkedList list=new LinkedList(); + for(String n : materials) list.add(n); + return list; + } + } + public static class ProductExpPair{ + public ItemStack product; + public double exp; + + public ProductExpPair(ItemStack p, double e){ + product=p; + exp=e; + } + public boolean isItemEqual(ItemStack item){ + return product.isItemEqual(item); + } + public double getExp(){ + return exp; + } + } + public static class ItemPair{ + private ItemStack item1; + private ItemStack item2; + public ItemPair(ItemStack i1, ItemStack i2){ + item1=i1; + item2=i2; + } + public ItemStack getItem1(){ return item1; } + public ItemStack getItem2(){ return item2; } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyMaterial.class b/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyMaterial.class new file mode 100644 index 0000000..ed9cc6b Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyMaterial.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyMaterial.java b/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyMaterial.java new file mode 100644 index 0000000..10b1a98 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyMaterial.java @@ -0,0 +1,24 @@ +package jp.plusplus.fbs.alchemy; + +import jp.plusplus.fbs.alchemy.characteristic.CharacteristicBase; +import jp.plusplus.fbs.world.biome.WorldGenDirtyOak; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.Random; + +/** + * Created by plusplus_F on 2015/09/08. + * 素材アイテムが実装すべきインターフェース + */ +public interface IAlchemyMaterial { + /** + * 鑑定時に特性を付与するための特性リストをランダムで生成する。 + * 戻り値の内容が全てItemStackに付与される + * @param itemStack + * @param rand + * @return アイテムスタックに付与される特性(Nullable) + */ + ArrayList addCharacteristics(ItemStack itemStack, Random rand); +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyProduct.class b/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyProduct.class new file mode 100644 index 0000000..472d110 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyProduct.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyProduct.java b/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyProduct.java new file mode 100644 index 0000000..1104aee --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/IAlchemyProduct.java @@ -0,0 +1,35 @@ +package jp.plusplus.fbs.alchemy; + +import jp.plusplus.fbs.alchemy.characteristic.CharacteristicBase; +import net.minecraft.item.ItemStack; + +import java.util.ArrayList; +import java.util.Random; + +/** + * Created by plusplus_F on 2015/09/09. + * 大釜によって作成できるアイテムに実装すべきインターフェース + */ +public interface IAlchemyProduct { + /** + * その特性を引き継げるか判定する + * @param cb 判定したい特性 + * @return true:引継ぎ可能 + */ + boolean canInherit(ItemStack itemStack, CharacteristicBase cb); + + /** + * 特性引継ぎ時に、引継ぎ可能な特性の数を返す + * @param itemStack + * @return + */ + int getMaxInheritAmount(ItemStack itemStack); + + /** + * 調合した際に、最初から付与されている特性リストを返す + * (このメソッドでは特性を付与しない!) + * @param itemStack + * @return + */ + ArrayList getDefaultCharacteristics(ItemStack itemStack, Random rand); +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyIntermediateMaterial.class b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyIntermediateMaterial.class new file mode 100644 index 0000000..42eb338 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyIntermediateMaterial.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyIntermediateMaterial.java b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyIntermediateMaterial.java new file mode 100644 index 0000000..c574a47 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyIntermediateMaterial.java @@ -0,0 +1,143 @@ +package jp.plusplus.fbs.alchemy; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.alchemy.characteristic.*; +import jp.plusplus.fbs.item.ItemBase; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.IIcon; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +/** + * Created by plusplus_F on 2015/10/19. + * 中間素材だよ!中間素材! + */ +public class ItemAlchemyIntermediateMaterial extends ItemBase implements IAlchemyMaterial, IAlchemyProduct { + public static String[] NAMES={ + //0 + "neutralizer", "gunpowder", "herbPowder", "herbDense", "potionActivate", "bladeSpice", "plantPowder", "mushroomPowder" + }; + protected IIcon[] icons; + + public ItemAlchemyIntermediateMaterial(){ + setMaxDamage(0); + setHasSubtypes(true); + setCreativeTab(FBS.tabAlchemy); + } + + @Override + public int getMetadata(int par1) { + return par1; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + for(int i=0;i cbs=addCharacteristics(it, AlchemyRegistry.getRandom()); + AlchemyRegistry.WriteCharacteristicToNBT(it.getTagCompound(), cbs); + + list.add(it); + } + } + + @Override + public String getUnlocalizedName(ItemStack p_77667_1_) { + int meta=p_77667_1_.getItemDamage(); + if(meta<0 ||meta>=NAMES.length) meta=0; + + return "item.fbs.intermediate." + NAMES[meta]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + icons=new IIcon[NAMES.length]; + + for(int i=0;i addCharacteristics(ItemStack itemStack, Random rand) { + ArrayList list=new ArrayList(); + return list; + } + + //-----------------------------------IAlchemyProduct--------------------------------------------- + @Override + public boolean canInherit(ItemStack itemStack, CharacteristicBase cb) { + int meta=itemStack.getItemDamage(); + + if(cb instanceof CharacteristicQuality){ + return true; + } + + if(meta!=0 && meta!=4 && cb instanceof CharacteristicWeight){ + return true; + } + + if((meta==2 || meta==3 || meta==6 || meta==7) && + (cb instanceof CharacteristicHealth || cb instanceof CharacteristicSanity || cb instanceof CharacteristicStamina + || cb instanceof CharacteristicExp)){ + return true; + } + + if((meta==5 || meta==6 || meta==8) && + (cb instanceof CharacteristicPoison || cb instanceof CharacteristicSpeed || cb instanceof CharacteristicHealth + || cb instanceof CharacteristicConfusion || cb instanceof CharacteristicPower)){ + return true; + } + + /* + if(meta==3 && cb instanceof CharacteristicLook){ + return true; + } + */ + + return false; + } + + @Override + public int getMaxInheritAmount(ItemStack itemStack) { + int meta=itemStack.getItemDamage(); + if(meta==2 || meta==3) return 4; + if(meta==5) return 3; + if(meta==6 || meta==7) return 5; + return 2; + } + + @Override + public ArrayList getDefaultCharacteristics(ItemStack itemStack, Random rand) { + ArrayList ret=new ArrayList(); + return ret; + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyMaterial.class b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyMaterial.class new file mode 100644 index 0000000..78475a9 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyMaterial.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyMaterial.java b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyMaterial.java new file mode 100644 index 0000000..c8b6cf6 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyMaterial.java @@ -0,0 +1,307 @@ +package jp.plusplus.fbs.alchemy; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.alchemy.characteristic.*; +import jp.plusplus.fbs.item.ItemBase; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.resources.I18n; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.FurnaceRecipes; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +/** + * Created by plusplus_F on 2015/09/09. + */ +public class ItemAlchemyMaterial extends ItemBase implements IAlchemyMaterial { + public static String[] NAMES={ + //0 + "water","waterUnclean","lava", + + //3 + "leafTree","branchTree","rootsTree","leafUnclean","branchUnclean","rootsUnclean", + + //9 + "grassAntidote","grassVine","rootsRakuyo","grassRakuyo","seedsRyusen","flowerRyusen","seedsPower","seedsDefence","fruitsWalnut", + + //18 + "herbBase","herbBlood","herbMana","herbStamina","herbSoul","herbMandrake","fruitsMandrake", + + //25 + "mushroomBlue","mushroomPoisonous","mushroomTiredness","mushroomNitrogen","mushroomTsukiyo", + + //30 + "flowerFox", "grassOtogiri", "grassEnmei", "flowerTsukimi", "grassGunpowder", "grassNightShade", + + //36 + "herbGold", "herbEnder", "herbExplosive", "herbUnclean", "tearSpirit", + + //41 + "mushroomParalysis", "mushroomSuperParalysis", "mushroomReishi", "mushroomGold", "mushroomChaos" + }; + protected IIcon[] icons; + + public ItemAlchemyMaterial(){ + setMaxDamage(0); + setHasSubtypes(true); + setCreativeTab(FBS.tabAlchemy); + } + + @Override + public int getMetadata(int par1) { + return par1; + } + + @Override + public String getUnlocalizedName(ItemStack p_77667_1_) { + int meta=p_77667_1_.getItemDamage(); + if(meta<0 ||meta>=NAMES.length) meta=0; + + return "item.fbs.material." + NAMES[meta]; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + for(int i=0;i cbs=addCharacteristics(it, AlchemyRegistry.getRandom()); + AlchemyRegistry.WriteCharacteristicToNBT(it.getTagCompound(), cbs); + + list.add(it); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + icons=new IIcon[NAMES.length]; + + for(int i=0;i=icons.length) p_77617_1_=0; + return icons[p_77617_1_]; + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean p_77624_4_) { + AlchemyRegistry.AddCharacteristicsInfo(itemStack, list, p_77624_4_); + AlchemyRegistry.AddMaterialInfo(itemStack, list, p_77624_4_); + } + + //------------------------------- IAlchemyMaterial ----------------------------------- + + @Override + public ArrayList addCharacteristics(ItemStack itemStack, Random rand) { + int meta=itemStack.getItemDamage(); + ArrayList list=new ArrayList(); + CharacteristicBase cb; + + //--------------------------なんにでもつくやつ-------------------------------- + float r; + //見た目 + if(meta==1 || meta==6 || meta==7 || meta==8 || meta==39){ + //不浄なやつ + cb = new CharacteristicLook(); + cb.setValue(3); + list.add(cb); + } + else { + /* + r = rand.nextFloat(); + if (r < 0.08f) { + cb = new CharacteristicLook(); + cb.setValue(0); + list.add(cb); + } else if (r < 0.38f) { + cb = new CharacteristicLook(); + cb.setValue(1); + list.add(cb); + } else if (r < 0.58f) { + cb = new CharacteristicLook(); + cb.setValue(2); + list.add(cb); + } + */ + } + //品質 + r = rand.nextFloat(); + if (r < 0.08f) { + cb = new CharacteristicQuality(); + cb.setValue(0); + list.add(cb); + } else if (r < 0.38f) { + cb = new CharacteristicQuality(); + cb.setValue(1); + list.add(cb); + } else if (r < 0.58f) { + cb = new CharacteristicQuality(); + cb.setValue(2); + list.add(cb); + } + + //--------------------------個別-------------------------------- + if(meta==40){ + cb = new CharacteristicSanity.Gain(); + cb.setValue(0); + list.add(cb); + } + if(meta==1 || meta==6 || meta==7 || meta==8 || meta==37 || meta==39){ + cb = new CharacteristicSanity.Lose(); + cb.setValue(rand.nextFloat()<0.3f?1:0); + list.add(cb); + } + if(meta==45){ + cb = new CharacteristicSanity.Lose(); + cb.setValue(2); + list.add(cb); + } + + if(meta==19 || meta==32 || meta==23 || meta==24){ + cb=new CharacteristicHealth.Gain(); + cb.setValue(0); + list.add(cb); + } + if(meta==31 || meta==36 || meta==44){ + cb=new CharacteristicHealth.Gain(); + cb.setValue(1); + list.add(cb); + } + if(meta==29){ + cb=new CharacteristicHealth.Lose(); + cb.setValue(0); + list.add(cb); + } + + if(FBS.cooperatesSS2){ + if(meta==0 || meta==1){ + cb=new CharacteristicWater.Gain(); + cb.setValue(0); + list.add(cb); + } + if(meta==11 || meta==12 || meta==13 || meta==21 || meta==23 || meta==24){ + cb=new CharacteristicStamina.Gain(); + cb.setValue(0); + list.add(cb); + } + if(meta==14){ + cb=new CharacteristicStamina.Gain(); + cb.setValue(1); + list.add(cb); + } + if(meta==44){ + cb=new CharacteristicStamina.Gain(); + cb.setValue(2); + list.add(cb); + } + if(meta==27){ + cb=new CharacteristicStamina.Lose(); + cb.setValue(0); + list.add(cb); + } + } + + if(meta==36 || meta==37 || meta==43){ + cb=new CharacteristicExp.Gain(); + cb.setValue(0); + list.add(cb); + } + if(meta==44){ + cb=new CharacteristicExp.Gain(); + cb.setValue(2); + list.add(cb); + } + + if(meta==26 || meta==29){ + cb=new CharacteristicPoison.Gain(); + cb.setValue(0); + list.add(cb); + } + if(meta==30 || meta==45){ + cb=new CharacteristicPoison.Gain(); + cb.setValue(1); + list.add(cb); + } + if(meta==9 || meta==11 || meta==12){ + cb=new CharacteristicPoison.Lose(); + cb.setValue(0); + list.add(cb); + } + + if(meta==28 || meta==38){ + cb=new CharacteristicPower.Gain(); + cb.setValue(0); + list.add(cb); + } + if(meta==15){ + cb=new CharacteristicPower.Gain(); + cb.setValue(1); + list.add(cb); + } + if(meta==27 || meta==41){ + cb=new CharacteristicPower.Lose(); + cb.setValue(0); + list.add(cb); + } + if(meta==42){ + cb=new CharacteristicPower.Lose(); + cb.setValue(1); + list.add(cb); + } + + if(meta==13 || meta==14){ + cb=new CharacteristicCleverness.Gain(); + cb.setValue(0); + list.add(cb); + } + if(meta==43){ + cb=new CharacteristicCleverness.Gain(); + cb.setValue(2); + list.add(cb); + } + + if(meta==35){ + cb=new CharacteristicSpeed.Gain(); + cb.setValue(0); + list.add(cb); + } + if(meta==27){ + cb=new CharacteristicSpeed.Lose(); + cb.setValue(0); + list.add(cb); + } + if(meta==41){ + cb=new CharacteristicSpeed.Lose(); + cb.setValue(1); + list.add(cb); + } + if(meta==42){ + cb=new CharacteristicSpeed.Lose(); + cb.setValue(2); + list.add(cb); + } + + return list; + } + +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyPotion.class b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyPotion.class new file mode 100644 index 0000000..9b577c7 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyPotion.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyPotion.java b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyPotion.java new file mode 100644 index 0000000..1e487b8 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/ItemAlchemyPotion.java @@ -0,0 +1,149 @@ +package jp.plusplus.fbs.alchemy; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.alchemy.characteristic.*; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +/** + * Created by plusplus_F on 2015/09/23. + */ +public class ItemAlchemyPotion extends ItemFood implements IAlchemyProduct { + public static final String[] NAMES={"potion", "ointment", "potionSpirit"}; + protected IIcon[] icons; + + public ItemAlchemyPotion() { + super(0, 0, false); + setCreativeTab(FBS.tabAlchemy); + setAlwaysEdible(); + setMaxStackSize(1); + setHasSubtypes(true); + setMaxDamage(0); + } + + public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { + --p_77654_1_.stackSize; + + //特性の効果発動 + ArrayList list=AlchemyRegistry.ReadCharacteristicFromNBT(p_77654_1_.getTagCompound()); + for(CharacteristicBase cb : list) cb.affectEntity(p_77654_2_, p_77654_3_); + + return p_77654_1_; + } + + public EnumAction getItemUseAction(ItemStack p_77661_1_) + { + return EnumAction.drink; + } + + @Override + public int getMetadata(int par1) { + return par1; + } + + @Override + public String getUnlocalizedName(ItemStack p_77667_1_) { + int meta=p_77667_1_.getItemDamage(); + if(meta<0 ||meta>=NAMES.length) meta=0; + + return "item.fbs.alchemy." + NAMES[meta]; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + for(int i=0;i cbs=getDefaultCharacteristics(it, AlchemyRegistry.getRandom()); + AlchemyRegistry.WriteCharacteristicToNBT(it.getTagCompound(), cbs); + + list.add(it); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + icons=new IIcon[NAMES.length]; + for(int i=0;i=icons.length) p_77617_1_=0; + return icons[p_77617_1_]; + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean p_77624_4_) { + AlchemyRegistry.AddCharacteristicsInfo(itemStack, list, p_77624_4_); + } + + //---------------------------------------------------------------------------------- + + @Override + public boolean canInherit(ItemStack itemStack, CharacteristicBase cb) { + int meta=itemStack.getItemDamage(); + + if(meta==0 && (cb instanceof CharacteristicWater)){ + return true; + } + + if(cb instanceof CharacteristicLook) return false; + if(cb instanceof CharacteristicWeight) return false; + + return true; + } + + @Override + public int getMaxInheritAmount(ItemStack itemStack) { + return itemStack.getItemDamage()==0?3:5; + } + + @Override + public ArrayList getDefaultCharacteristics(ItemStack itemStack, Random rand) { + ArrayList ret=new ArrayList(); + int d=itemStack.getItemDamage(); + CharacteristicBase cb; + + if(FBS.cooperatesSS2 && d==0){ + //水分 + cb=new CharacteristicWater.Gain(); + cb.setValue(0); + ret.add(cb); + } + if(d==2){ + if(FBS.cooperatesSS2){ + //水分 + cb=new CharacteristicWater.Gain(); + cb.setValue(0); + ret.add(cb); + } + + //SAN + cb=new CharacteristicSanity.Lose(); + cb.setValue(1); + ret.add(cb); + } + + return ret; + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemEatableAlchemyMaterial.class b/src/main/java/jp/plusplus/fbs/alchemy/ItemEatableAlchemyMaterial.class new file mode 100644 index 0000000..e0c906c Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/ItemEatableAlchemyMaterial.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemEatableAlchemyMaterial.java b/src/main/java/jp/plusplus/fbs/alchemy/ItemEatableAlchemyMaterial.java new file mode 100644 index 0000000..d5e0ecb --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/ItemEatableAlchemyMaterial.java @@ -0,0 +1,178 @@ +package jp.plusplus.fbs.alchemy; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.alchemy.characteristic.*; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +/** + * Created by plusplus_F on 2016/02/23. + */ +public class ItemEatableAlchemyMaterial extends ItemFood implements IAlchemyMaterial { + public static String[] NAMES={ + "mushroomQli", "mushroomMatsu", "mushroomWarai", "mushroomNigaQli", + + //4 + "fruitsStamina", "fruitsItete", "fruitsSassa" + }; + + protected int[] heal={ + 2, 6, 2, 2, 2, 2, 2 + }; + protected float[] sat={ + 0.15f, 0.5f, 0.15f, 0.15f, 0.1f, 0.1f, 0.1f + }; + + protected IIcon[] icons; + + public ItemEatableAlchemyMaterial() { + super(0, 0, false); + setMaxDamage(0); + setHasSubtypes(true); + setCreativeTab(FBS.tabAlchemy); + } + + @Override + public int getMetadata(int par1) { + return par1; + } + + @Override + public String getUnlocalizedName(ItemStack p_77667_1_) { + int meta=p_77667_1_.getItemDamage(); + if(meta<0 ||meta>=NAMES.length) meta=0; + + return "item.fbs.material." + NAMES[meta]; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + for(int i=0;i cbs=addCharacteristics(it, AlchemyRegistry.getRandom()); + AlchemyRegistry.WriteCharacteristicToNBT(it.getTagCompound(), cbs); + + list.add(it); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) { + icons=new IIcon[NAMES.length]; + + for(int i=0;i=icons.length) p_77617_1_=0; + return icons[p_77617_1_]; + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean p_77624_4_) { + AlchemyRegistry.AddCharacteristicsInfo(itemStack, list, p_77624_4_); + AlchemyRegistry.AddMaterialInfo(itemStack, list, p_77624_4_); + } + + + @Override + public int func_150905_g(ItemStack p_150905_1_) { + return heal[p_150905_1_.getItemDamage()]; + } + + @Override + public float func_150906_h(ItemStack p_150906_1_) { + return sat[p_150906_1_.getItemDamage()]; + } + + @Override + protected void onFoodEaten(ItemStack p_77849_1_, World p_77849_2_, EntityPlayer p_77849_3_) { + //特性の効果発動 + if (!p_77849_2_.isRemote) { + ArrayList list = AlchemyRegistry.ReadCharacteristicFromNBT(p_77849_1_.getTagCompound()); + for (CharacteristicBase cb : list) cb.affectEntity(p_77849_2_, p_77849_3_); + } + } + + @Override + public ArrayList addCharacteristics(ItemStack itemStack, Random rand) { + int meta=itemStack.getItemDamage(); + ArrayList list=new ArrayList(); + CharacteristicBase cb; + + //--------------------------なんにでもつくやつ-------------------------------- + float r; + //品質 + r = rand.nextFloat(); + if (r < 0.08f) { + cb = new CharacteristicQuality(); + cb.setValue(0); + list.add(cb); + } else if (r < 0.38f) { + cb = new CharacteristicQuality(); + cb.setValue(1); + list.add(cb); + } else if (r < 0.58f) { + cb = new CharacteristicQuality(); + cb.setValue(2); + list.add(cb); + } + + if(FBS.cooperatesSS2){ + if(meta==1 || meta==4){ + cb = new CharacteristicStamina.Gain(); + cb.setValue(0); + list.add(cb); + } + } + + if(meta==3){ + cb = new CharacteristicPoison.Gain(); + cb.setValue(0); + list.add(cb); + } + + if(meta==2){ + cb = new CharacteristicConfusion.Gain(); + cb.setValue(0); + list.add(cb); + } + + if(meta==5){ + cb = new CharacteristicHealth.Lose(); + cb.setValue(0); + list.add(cb); + } + + if(meta==6){ + cb = new CharacteristicSpeed.Gain(); + cb.setValue(0); + list.add(cb); + } + + return list; + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook$1.class b/src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook$1.class new file mode 100644 index 0000000..14493c0 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook$1.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook.class b/src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook.class new file mode 100644 index 0000000..9c2d64c Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook.java b/src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook.java new file mode 100644 index 0000000..45c8717 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/ItemRecipeBook.java @@ -0,0 +1,68 @@ +package jp.plusplus.fbs.alchemy; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.alchemy.characteristic.CharacteristicBase; +import jp.plusplus.fbs.item.ItemBase; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.StatCollector; + +import java.util.*; + +/** + * Created by plusplus_F on 2015/09/25. + */ +public class ItemRecipeBook extends ItemBase{ + public ItemRecipeBook(){ + setCreativeTab(FBS.tabAlchemy); + setUnlocalizedName("recipe"); + setTextureName("recipe"); + setMaxDamage(0); + setHasSubtypes(true); + } + + @Override + public int getMetadata(int par1) { + return par1; + } + + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + ArrayList rbs=new ArrayList(); + for(AlchemyRegistry.Recipe r : AlchemyRegistry.GetRecieps()){ + if(r.getKey().getItem()==this){ + rbs.add(r); + } + } + Collections.sort(rbs, new Comparator() { + @Override + public int compare(AlchemyRegistry.Recipe o1, AlchemyRegistry.Recipe o2) { + return o1.level-o2.level; + } + }); + for(AlchemyRegistry.Recipe r : rbs){ + list.add(r.getKey().copy()); + } + } + + @Override + public void addInformation(ItemStack item, EntityPlayer p_77624_2_, List list, boolean flag) { + AlchemyRegistry.Recipe r = AlchemyRegistry.GetRecipe(item); + if (r != null) { + list.add(r.getProduct().getDisplayName()); + list.add(StatCollector.translateToLocal("info.fbs.book.lv")+":" + r.getLevel()); + list.add("["+StatCollector.translateToLocal("alchemy.fbs.usage")+"]"); + for (String n : r.getMaterialList()) { + list.add("-"+n); + } + } + } + +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase$Type.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase$Type.class new file mode 100644 index 0000000..cc595d7 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase$Type.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase.class new file mode 100644 index 0000000..ba19c11 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase.java new file mode 100644 index 0000000..2141768 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicBase.java @@ -0,0 +1,114 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import jp.plusplus.fbs.alchemy.AlchemyRegistry; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/09/08. + * 錬金術の素材・生成品の「特性」 + */ +public abstract class CharacteristicBase { + protected int value; + protected String uName=""; + + public CharacteristicBase(){} + + /** + * 特性の強さの単位を得る + * @return 特性の強さの単位 + */ + public abstract Type getType(); + + /** + * 生成品のMP価格への倍率補正を返す + * @return 価格倍率 + */ + public float getMPScale(){ + return 1.f; + } + + /** + * この特性を持つアイテムをplayerが使用した際に行う処理 + * @param world + * @param entity + */ + public void affectEntity(World world, EntityLivingBase entity){} + + /** + * ツールチップでの表示色を返す + * @return 表示色 + */ + public ChatFormatting getNameColor(){ + return ChatFormatting.GRAY; + } + + public void writeToNBT(NBTTagCompound nbt){ + nbt.setInteger("value", getValue()); + } + public void readFromNBT(NBTTagCompound nbt){ + value=nbt.getInteger("value"); + } + + public int getValue(){ return getType().getCorrectedValue(value); } + /** + * 効果の強さを設定する + * @param value + */ + public void setValue(int value){ + this.value=value; + } + + + public int getId(){ + return AlchemyRegistry.GetCharacteristicId(this.getClass()); + } + + public void setUnlocalizedName(String u){ uName=u; } + public String getUnlocalizedName(){ + return "alchemy.chara."+uName; + } + public String getLocalizedName(){ + return StatCollector.translateToLocal(getUnlocalizedName()); + } + + public String getUnlocalizedEffectValue(){ + return getType().getUnlocalizedName(value); + } + public String getLocalizedEffectValue(){ + return StatCollector.translateToLocal(getUnlocalizedEffectValue()); + } + + /** + * 特性の持つ、効果の強さの単位 + * 特性はvalueが大きい順に優先される + */ + public enum Type{ + SCALE("fbs.small", "fbs.medium", "fbs.large"), + LENGTH("fbs.short", "fbs.medium", "fbs.long"), + LOOK("fbs.look.beautiful", "fbs.look.good", "fbs.look.dirty", "fbs.look.strange"), + WEIGHT("fbs.light", "fbs.heavy"), + QUALITY("fbs.great", "fbs.good", "fbs.bad"), + NONE(); + + private String[] str; + Type(String ... name){ + str=name; + } + public String getUnlocalizedName(int value){ + if(str==null || str.length==0) return ""; + + value=getCorrectedValue(value); + return "alchemy.effect."+str[value]; + } + public int getCorrectedValue(int value){ + if(value<0 || value>=str.length) value=0; + return value; + } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness$Gain.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness$Gain.class new file mode 100644 index 0000000..b8e6b78 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness$Gain.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness$Lose.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness$Lose.class new file mode 100644 index 0000000..9ebbfb8 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness$Lose.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness.class new file mode 100644 index 0000000..e8adc96 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness.java new file mode 100644 index 0000000..4088d99 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicCleverness.java @@ -0,0 +1,45 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import jp.plusplus.fbs.Registry; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/09/20. + */ +public class CharacteristicCleverness extends CharacteristicBase { + protected boolean reverse; + public CharacteristicCleverness(boolean minus){ + reverse=minus; + setUnlocalizedName("fbs.cleverness."+(reverse?"lose":"gain")); + } + + @Override + public Type getType() { + return Type.LENGTH; + } + + @Override + public void affectEntity(World world, EntityLivingBase entity){ + int lv=getType().getCorrectedValue(value); + int d=60+60*lv; + + if(reverse) entity.removePotionEffect(Potion.poison.getId()); + else entity.addPotionEffect(new PotionEffect(Registry.potionCleverness.getId(), 20*d, lv+1)); + } + + @Override + public ChatFormatting getNameColor(){ + return reverse?ChatFormatting.RED:ChatFormatting.DARK_GREEN; + } + + public static class Gain extends CharacteristicCleverness { + public Gain(){ super(false); } + } + public static class Lose extends CharacteristicCleverness { + public Lose(){ super(true); } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion$Gain.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion$Gain.class new file mode 100644 index 0000000..4601fff Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion$Gain.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion$Lose.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion$Lose.class new file mode 100644 index 0000000..292384c Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion$Lose.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion.class new file mode 100644 index 0000000..e582350 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion.java new file mode 100644 index 0000000..2db11fe --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicConfusion.java @@ -0,0 +1,43 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/09/20. + */ +public class CharacteristicConfusion extends CharacteristicBase { + protected boolean reverse; + public CharacteristicConfusion(boolean minus){ + reverse=minus; + setUnlocalizedName("fbs.poison."+(reverse?"lose":"gain")); + } + + @Override + public Type getType() { + return Type.LENGTH; + } + + @Override + public void affectEntity(World world, EntityLivingBase entity){ + int d=10+10*getType().getCorrectedValue(value); + + if(reverse) entity.removePotionEffect(Potion.confusion.getId()); + else entity.addPotionEffect(new PotionEffect(Potion.confusion.getId(), 20*d, 1)); + } + + @Override + public ChatFormatting getNameColor(){ + return !reverse?ChatFormatting.RED:ChatFormatting.DARK_GREEN; + } + + public static class Gain extends CharacteristicConfusion { + public Gain(){ super(false); } + } + public static class Lose extends CharacteristicConfusion { + public Lose(){ super(true); } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp$Gain.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp$Gain.class new file mode 100644 index 0000000..7c2bda5 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp$Gain.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp$Lose.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp$Lose.class new file mode 100644 index 0000000..7c800f8 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp$Lose.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp.class new file mode 100644 index 0000000..f7fa9da Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp.java new file mode 100644 index 0000000..f206c73 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicExp.java @@ -0,0 +1,53 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemExpBottle; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/09/24. + */ +public class CharacteristicExp extends CharacteristicBase { + protected boolean reverse; + public CharacteristicExp(boolean minus){ + reverse=minus; + setUnlocalizedName("fbs.exp."+(reverse?"lose":"gain")); + } + + @Override + public Type getType() { + return Type.SCALE; + } + + @Override + public void affectEntity(World world, EntityLivingBase entity){ + if(!(entity instanceof EntityPlayer)) return; + EntityPlayer ep=(EntityPlayer)entity; + + int d=6+6*getType().getCorrectedValue(value); + + if(reverse) { + ep.experience -= (float) d / (float) ep.xpBarCap(); + for (ep.experienceTotal -= d; ep.experience < 0.0F; ep.experience /= (float) ep.xpBarCap()) { + ep.experience = (1.0f - ep.experience) * (float) ep.xpBarCap(); + ep.addExperienceLevel(-1); + } + } + else ((EntityPlayer) entity).addExperience(d); + } + + @Override + public ChatFormatting getNameColor(){ + return reverse?ChatFormatting.RED:ChatFormatting.DARK_GREEN; + } + + public static class Gain extends CharacteristicExp { + public Gain(){ super(false); } + } + public static class Lose extends CharacteristicExp { + public Lose(){ super(true); } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth$Gain.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth$Gain.class new file mode 100644 index 0000000..afdc59e Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth$Gain.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth$Lose.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth$Lose.class new file mode 100644 index 0000000..5cf0a9e Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth$Lose.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth.class new file mode 100644 index 0000000..0688752 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth.java new file mode 100644 index 0000000..ac4c46f --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicHealth.java @@ -0,0 +1,45 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/09/20. + */ +public class CharacteristicHealth extends CharacteristicBase { + protected boolean reverse; + public CharacteristicHealth(boolean minus){ + reverse=minus; + setUnlocalizedName("fbs.life."+(reverse?"lose":"gain")); + } + + @Override + public Type getType() { + return Type.SCALE; + } + + @Override + public void affectEntity(World world, EntityLivingBase entity){ + float d=6+6*getType().getCorrectedValue(value); + + if(reverse) entity.attackEntityFrom(new DamageSource(""), d); + else entity.heal(d); + } + + @Override + public ChatFormatting getNameColor(){ + return reverse?ChatFormatting.RED:ChatFormatting.DARK_GREEN; + } + + public static class Gain extends CharacteristicHealth{ + public Gain(){ super(false); } + } + public static class Lose extends CharacteristicHealth{ + public Lose(){ super(true); } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicLook.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicLook.class new file mode 100644 index 0000000..26b62bd Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicLook.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicLook.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicLook.java new file mode 100644 index 0000000..192ce6c --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicLook.java @@ -0,0 +1,25 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +/** + * Created by plusplus_F on 2015/09/24. + */ +public class CharacteristicLook extends CharacteristicBase { + + public CharacteristicLook(){ + setUnlocalizedName("fbs.look"); + } + + public float getMPScale(){ + int v=getValue(); + if(v==0) return 2.0f; + if(v==1) return 1.5f; + if(v==2) return 0.5f; + if(v==3) return 1.0f; + return 1.f; + } + + @Override + public Type getType() { + return Type.LOOK; + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison$Gain.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison$Gain.class new file mode 100644 index 0000000..16ccc66 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison$Gain.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison$Lose.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison$Lose.class new file mode 100644 index 0000000..487a67e Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison$Lose.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison.class new file mode 100644 index 0000000..0e9196c Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison.java new file mode 100644 index 0000000..cfbe4ba --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPoison.java @@ -0,0 +1,44 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/09/20. + */ +public class CharacteristicPoison extends CharacteristicBase { + protected boolean reverse; + public CharacteristicPoison(boolean minus){ + reverse=minus; + setUnlocalizedName("fbs.poison."+(reverse?"lose":"gain")); + } + + @Override + public Type getType() { + return Type.LENGTH; + } + + @Override + public void affectEntity(World world, EntityLivingBase entity){ + int d=10+10*getType().getCorrectedValue(value); + + if(reverse) entity.removePotionEffect(Potion.poison.getId()); + else entity.addPotionEffect(new PotionEffect(Potion.poison.getId(), 20*d, 1)); + } + + @Override + public ChatFormatting getNameColor(){ + return !reverse?ChatFormatting.RED:ChatFormatting.DARK_GREEN; + } + + public static class Gain extends CharacteristicPoison { + public Gain(){ super(false); } + } + public static class Lose extends CharacteristicPoison { + public Lose(){ super(true); } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower$Gain.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower$Gain.class new file mode 100644 index 0000000..707e1d2 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower$Gain.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower$Lose.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower$Lose.class new file mode 100644 index 0000000..7a0b04b Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower$Lose.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower.class new file mode 100644 index 0000000..b1c523f Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower.java new file mode 100644 index 0000000..42021ee --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicPower.java @@ -0,0 +1,50 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/09/20. + */ +public class CharacteristicPower extends CharacteristicBase { + protected boolean reverse; + public CharacteristicPower(boolean minus){ + reverse=minus; + setUnlocalizedName("fbs.power."+(reverse?"lose":"gain")); + } + + @Override + public Type getType() { + return Type.LENGTH; + } + + @Override + public void affectEntity(World world, EntityLivingBase entity){ + int lv=getType().getCorrectedValue(value); + int d=30+30*lv; + + if(reverse){ + entity.removePotionEffect(Potion.damageBoost.getId()); + entity.addPotionEffect(new PotionEffect(Potion.weakness.getId(), 20*d, lv+1)); + } + else{ + entity.removePotionEffect(Potion.weakness.getId()); + entity.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), 20*d, lv+1)); + } + } + + @Override + public ChatFormatting getNameColor(){ + return reverse?ChatFormatting.RED:ChatFormatting.DARK_GREEN; + } + + public static class Gain extends CharacteristicPower { + public Gain(){ super(false); } + } + public static class Lose extends CharacteristicPower { + public Lose(){ super(true); } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicQuality.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicQuality.class new file mode 100644 index 0000000..63ef353 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicQuality.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicQuality.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicQuality.java new file mode 100644 index 0000000..171bf94 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicQuality.java @@ -0,0 +1,24 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +/** + * Created by plusplus_F on 2015/09/24. + */ +public class CharacteristicQuality extends CharacteristicBase { + + public CharacteristicQuality(){ + setUnlocalizedName("fbs.quality"); + } + + public float getMPScale(){ + int v=getValue(); + if(v==0) return 3.0f; + if(v==1) return 1.5f; + if(v==2) return 0.8f; + return 1.f; + } + + @Override + public Type getType() { + return Type.QUALITY; + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity$Gain.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity$Gain.class new file mode 100644 index 0000000..26f3693 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity$Gain.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity$Lose.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity$Lose.class new file mode 100644 index 0000000..6f5dcac Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity$Lose.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity.class new file mode 100644 index 0000000..72c6889 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity.java new file mode 100644 index 0000000..f49734b --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSanity.java @@ -0,0 +1,45 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import jp.plusplus.fbs.exprop.SanityManager; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/09/20. + */ +public class CharacteristicSanity extends CharacteristicBase { + protected boolean reverse; + public CharacteristicSanity(boolean minus){ + reverse=minus; + setUnlocalizedName("fbs.sanity."+(reverse?"lose":"gain")); + } + + @Override + public Type getType() { + return Type.SCALE; + } + + @Override + public void affectEntity(World world, EntityLivingBase entity){ + if(!(entity instanceof EntityPlayer)) return; + + int t=getType().getCorrectedValue(value); + if(reverse) SanityManager.loseSanity((EntityPlayer)entity, 1+t, 6, true); + else SanityManager.addSanity((EntityPlayer) entity, 1 + t, 6, true); + } + + @Override + public ChatFormatting getNameColor(){ + return reverse?ChatFormatting.RED:ChatFormatting.DARK_GREEN; + } + + public static class Gain extends CharacteristicSanity { + public Gain(){ super(false); } + } + public static class Lose extends CharacteristicSanity { + public Lose(){ super(true); } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed$Gain.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed$Gain.class new file mode 100644 index 0000000..128823f Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed$Gain.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed$Lose.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed$Lose.class new file mode 100644 index 0000000..46f61dd Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed$Lose.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed.class new file mode 100644 index 0000000..2552c14 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed.java new file mode 100644 index 0000000..54e478f --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicSpeed.java @@ -0,0 +1,48 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/02/23. + */ +public class CharacteristicSpeed extends CharacteristicBase { + protected boolean reverse; + public CharacteristicSpeed(boolean minus){ + reverse=minus; + setUnlocalizedName("fbs.speed."+(reverse?"lose":"gain")); + } + + @Override + public Type getType() { + return Type.LENGTH; + } + + @Override + public void affectEntity(World world, EntityLivingBase entity) { + int d = 10 + 10 * getType().getCorrectedValue(value); + + if (reverse) { + entity.removePotionEffect(Potion.moveSlowdown.getId()); + entity.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), 20 * d, 1)); + } else { + entity.removePotionEffect(Potion.moveSpeed.getId()); + entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.getId(), 20 * d, 1)); + } + } + + @Override + public ChatFormatting getNameColor(){ + return reverse?ChatFormatting.RED:ChatFormatting.DARK_GREEN; + } + + public static class Gain extends CharacteristicSpeed { + public Gain(){ super(false); } + } + public static class Lose extends CharacteristicSpeed { + public Lose(){ super(true); } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina$Gain.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina$Gain.class new file mode 100644 index 0000000..ee7b1dc Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina$Gain.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina$Lose.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina$Lose.class new file mode 100644 index 0000000..028bae8 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina$Lose.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina.class new file mode 100644 index 0000000..995c511 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina.java new file mode 100644 index 0000000..bca5d3d --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicStamina.java @@ -0,0 +1,55 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.world.World; +import shift.sextiarysector.api.SextiarySectorAPI; +import shift.sextiarysector.packet.PacketPlayerData; +import shift.sextiarysector.packet.SSPacketHandler; +import shift.sextiarysector.player.CustomPlayerData; +import shift.sextiarysector.player.EntityPlayerManager; +import shift.sextiarysector.player.MoistureStats; +import shift.sextiarysector.player.StaminaStats; + +/** + * Created by plusplus_F on 2015/09/24. + */ +public class CharacteristicStamina extends CharacteristicBase { + protected boolean reverse; + public CharacteristicStamina(boolean minus){ + reverse=minus; + setUnlocalizedName("fbs.stamina."+(reverse?"lose":"gain")); + } + + @Override + public Type getType() { + return Type.SCALE; + } + + @Override + public void affectEntity(World world, EntityLivingBase entity){ + if(!(entity instanceof EntityPlayer)) return; + int d=30+30*getType().getCorrectedValue(value); + + EntityPlayer ep=(EntityPlayer) entity; + + if(reverse) SextiarySectorAPI.addStaminaExhaustion(ep, d * 10); + else SextiarySectorAPI.addStaminaStats(ep, d, 0.1f); + + if(ep instanceof EntityPlayerMP) SSPacketHandler.INSTANCE.sendTo(new PacketPlayerData(EntityPlayerManager.getCustomPlayerData(ep)), (EntityPlayerMP)ep); + } + + @Override + public ChatFormatting getNameColor(){ + return reverse?ChatFormatting.RED:ChatFormatting.DARK_GREEN; + } + + public static class Gain extends CharacteristicStamina { + public Gain(){ super(false); } + } + public static class Lose extends CharacteristicStamina { + public Lose(){ super(true); } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater$Gain.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater$Gain.class new file mode 100644 index 0000000..2c6d26b Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater$Gain.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater$Lose.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater$Lose.class new file mode 100644 index 0000000..136e8b8 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater$Lose.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater.class new file mode 100644 index 0000000..01c1d29 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater.java new file mode 100644 index 0000000..dfc6f0a --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWater.java @@ -0,0 +1,59 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +import com.mojang.realmsclient.gui.ChatFormatting; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; +import shift.sextiarysector.api.SextiarySectorAPI; +import shift.sextiarysector.packet.PacketPlayerData; +import shift.sextiarysector.packet.SSPacketHandler; +import shift.sextiarysector.player.CustomPlayerData; +import shift.sextiarysector.player.EntityPlayerManager; +import shift.sextiarysector.player.MoistureStats; + +/** + * Created by plusplus_F on 2015/09/24. + */ +public class CharacteristicWater extends CharacteristicBase { + protected boolean reverse; + public CharacteristicWater(boolean minus){ + reverse=minus; + setUnlocalizedName("fbs.water."+(reverse?"lose":"gain")); + } + + @Override + public Type getType() { + return Type.SCALE; + } + + @Override + public void affectEntity(World world, EntityLivingBase entity){ + if(!(entity instanceof EntityPlayer)) return; + int d=6+6*getType().getCorrectedValue(value); + + CustomPlayerData cpd= EntityPlayerManager.getCustomPlayerData((EntityPlayer)entity); + if(cpd==null) return; + MoistureStats ms=cpd.getMoisture(); + + EntityPlayer ep=(EntityPlayer) entity; + + if(reverse) SextiarySectorAPI.addMoistureExhaustion(ep, d*2); + else SextiarySectorAPI.addMoistureStats(ep, d, 0.1f); + + if(ep instanceof EntityPlayerMP) SSPacketHandler.INSTANCE.sendTo(new PacketPlayerData(EntityPlayerManager.getCustomPlayerData(ep)), (EntityPlayerMP) ep); + } + + @Override + public ChatFormatting getNameColor(){ + return reverse?ChatFormatting.RED:ChatFormatting.DARK_GREEN; + } + + public static class Gain extends CharacteristicWater { + public Gain(){ super(false); } + } + public static class Lose extends CharacteristicWater { + public Lose(){ super(true); } + } +} diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWeight.class b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWeight.class new file mode 100644 index 0000000..62bc1ad Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWeight.class differ diff --git a/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWeight.java b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWeight.java new file mode 100644 index 0000000..fa27b5d --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/alchemy/characteristic/CharacteristicWeight.java @@ -0,0 +1,23 @@ +package jp.plusplus.fbs.alchemy.characteristic; + +/** + * Created by plusplus_F on 2015/09/24. + */ +public class CharacteristicWeight extends CharacteristicBase { + + public CharacteristicWeight(){ + setUnlocalizedName("fbs.weight"); + } + + public float getMPScale(){ + int v=getValue(); + if(v==0) return 0.75f; + if(v==1) return 1.25f; + return 1.f; + } + + @Override + public Type getType() { + return Type.WEIGHT; + } +} -- cgit v1.2.3