From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../jp/plusplus/fbs/magic/MagicArrowFlexible.java | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicArrowFlexible.java (limited to 'src/main/java/jp/plusplus/fbs/magic/MagicArrowFlexible.java') diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicArrowFlexible.java b/src/main/java/jp/plusplus/fbs/magic/MagicArrowFlexible.java new file mode 100644 index 0000000..68d243e --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicArrowFlexible.java @@ -0,0 +1,63 @@ +package jp.plusplus.fbs.magic; + +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.api.IMagicEnchant; +import jp.plusplus.fbs.api.MagicBase; +import jp.plusplus.fbs.entity.EntityMagicArrowFlexible; +import jp.plusplus.fbs.item.ItemCore; +import jp.plusplus.fbs.item.ItemStaff; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; + +import java.util.LinkedList; + +/** + * Created by pluslus_F on 2015/06/23. + * + * 魔法の矢+付与魔法の汎用共鳴 + */ +public class MagicArrowFlexible extends MagicBase { + @Override + public boolean checkSuccess() { + return true; + } + + @Override + public void success() { + ItemStack item=player.getCurrentEquippedItem(); + if(item==null || !(item.getItem() instanceof ItemStaff)) return; + + int bookNum=((ItemStaff) item.getItem()).bookNum; + ItemStack[] items=ItemStaff.loadInventory(item); + + //付与魔法のリストを作成する + LinkedList magics = new LinkedList(); + for (int i = 0; i < bookNum; i++) { + if (items[i] != null && items[i].getItem() == ItemCore.bookSorcery) { + Registry.MagicData md=Registry.GetMagicDataFromItemStack(items[i]); + if(md==null) continue; + if(MagicArrow.class==md.magic) continue; + + //付与魔法であればリストに追加 + if(IMagicEnchant.class.isAssignableFrom(md.magic)){ + magics.add(md); + } + } + } + if (magics.isEmpty()) return; + + + //エンティティの生成 + int d=getLvDiff(); + float dm=isSpelled?2.0f:1.0f; + if(d>0) dm+=0.5f*(d/5); + + Entity e=new EntityMagicArrowFlexible(world, player, 1.0F, 1.0F, dm, magics.toArray(new Registry.MagicData[magics.size()])); + world.spawnEntityInWorld(e); + } + + @Override + public void failure() { + sanity(2,4); + } +} -- cgit v1.2.3