From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../java/jp/plusplus/fbs/magic/MagicArrow.class | Bin 0 -> 1478 bytes .../java/jp/plusplus/fbs/magic/MagicArrow.java | 33 +++++++ .../jp/plusplus/fbs/magic/MagicArrowFlexible.class | Bin 0 -> 2911 bytes .../jp/plusplus/fbs/magic/MagicArrowFlexible.java | 63 +++++++++++++ .../java/jp/plusplus/fbs/magic/MagicBarrier.class | Bin 0 -> 3138 bytes .../java/jp/plusplus/fbs/magic/MagicBarrier.java | 100 ++++++++++++++++++++ .../java/jp/plusplus/fbs/magic/MagicContract.class | Bin 0 -> 907 bytes .../java/jp/plusplus/fbs/magic/MagicContract.java | 29 ++++++ .../java/jp/plusplus/fbs/magic/MagicCopy.class | Bin 0 -> 891 bytes src/main/java/jp/plusplus/fbs/magic/MagicCopy.java | 28 ++++++ src/main/java/jp/plusplus/fbs/magic/MagicDig.class | Bin 0 -> 1480 bytes src/main/java/jp/plusplus/fbs/magic/MagicDig.java | 30 ++++++ .../java/jp/plusplus/fbs/magic/MagicDigTouch.class | Bin 0 -> 1631 bytes .../java/jp/plusplus/fbs/magic/MagicDigTouch.java | 39 ++++++++ .../java/jp/plusplus/fbs/magic/MagicFailure.class | Bin 0 -> 531 bytes .../java/jp/plusplus/fbs/magic/MagicFailure.java | 23 +++++ .../java/jp/plusplus/fbs/magic/MagicFireBolt.class | Bin 0 -> 2440 bytes .../java/jp/plusplus/fbs/magic/MagicFireBolt.java | 59 ++++++++++++ .../java/jp/plusplus/fbs/magic/MagicHarvest.class | Bin 0 -> 3736 bytes .../java/jp/plusplus/fbs/magic/MagicHarvest.java | 92 ++++++++++++++++++ .../jp/plusplus/fbs/magic/MagicHealingBall.class | Bin 0 -> 1284 bytes .../jp/plusplus/fbs/magic/MagicHealingBall.java | 30 ++++++ .../jp/plusplus/fbs/magic/MagicHealingSelf.class | Bin 0 -> 1482 bytes .../jp/plusplus/fbs/magic/MagicHealingSelf.java | 37 ++++++++ .../jp/plusplus/fbs/magic/MagicLoveHurricane.class | Bin 0 -> 2023 bytes .../jp/plusplus/fbs/magic/MagicLoveHurricane.java | 54 +++++++++++ .../java/jp/plusplus/fbs/magic/MagicReturn.class | Bin 0 -> 2732 bytes .../java/jp/plusplus/fbs/magic/MagicReturn.java | 53 +++++++++++ .../plusplus/fbs/magic/MagicSummonVillager.class | Bin 0 -> 2538 bytes .../jp/plusplus/fbs/magic/MagicSummonVillager.java | 66 +++++++++++++ .../java/jp/plusplus/fbs/magic/MagicTimeAcc.class | Bin 0 -> 2342 bytes .../java/jp/plusplus/fbs/magic/MagicTimeAcc.java | 49 ++++++++++ .../jp/plusplus/fbs/magic/MagicTimeTrace.class | Bin 0 -> 2518 bytes .../java/jp/plusplus/fbs/magic/MagicTimeTrace.java | 49 ++++++++++ .../java/jp/plusplus/fbs/magic/MagicTouch.class | Bin 0 -> 1289 bytes .../java/jp/plusplus/fbs/magic/MagicTouch.java | 33 +++++++ .../jp/plusplus/fbs/magic/MagicTouchFlexible.class | Bin 0 -> 3609 bytes .../jp/plusplus/fbs/magic/MagicTouchFlexible.java | 83 +++++++++++++++++ .../java/jp/plusplus/fbs/magic/MagicVortex.class | Bin 0 -> 3174 bytes .../java/jp/plusplus/fbs/magic/MagicVortex.java | 65 +++++++++++++ .../plusplus/fbs/magic/MagicVortexFlexible.class | Bin 0 -> 4926 bytes .../jp/plusplus/fbs/magic/MagicVortexFlexible.java | 103 +++++++++++++++++++++ .../java/jp/plusplus/fbs/magic/MagicWarp.class | Bin 0 -> 1475 bytes src/main/java/jp/plusplus/fbs/magic/MagicWarp.java | 37 ++++++++ .../java/jp/plusplus/fbs/magic/MagicWish.class | Bin 0 -> 1415 bytes src/main/java/jp/plusplus/fbs/magic/MagicWish.java | 28 ++++++ .../fbs/magic/enchant/MagicButterfly.class | Bin 0 -> 2548 bytes .../plusplus/fbs/magic/enchant/MagicButterfly.java | 64 +++++++++++++ .../fbs/magic/enchant/MagicCleverness.class | Bin 0 -> 1419 bytes .../fbs/magic/enchant/MagicCleverness.java | 33 +++++++ .../fbs/magic/enchant/MagicContemporary.class | Bin 0 -> 1634 bytes .../fbs/magic/enchant/MagicContemporary.java | 40 ++++++++ .../fbs/magic/enchant/MagicContractEffect.class | Bin 0 -> 1429 bytes .../fbs/magic/enchant/MagicContractEffect.java | 34 +++++++ .../jp/plusplus/fbs/magic/enchant/MagicDagon.class | Bin 0 -> 1421 bytes .../jp/plusplus/fbs/magic/enchant/MagicDagon.java | 34 +++++++ .../fbs/magic/enchant/MagicDamageBoost.class | Bin 0 -> 1436 bytes .../fbs/magic/enchant/MagicDamageBoost.java | 34 +++++++ .../fbs/magic/enchant/MagicEvolutionKing.class | Bin 0 -> 1917 bytes .../fbs/magic/enchant/MagicEvolutionKing.java | 39 ++++++++ .../fbs/magic/enchant/MagicFireArmor.class | Bin 0 -> 1889 bytes .../plusplus/fbs/magic/enchant/MagicFireArmor.java | 42 +++++++++ .../fbs/magic/enchant/MagicInvisible.class | Bin 0 -> 1475 bytes .../plusplus/fbs/magic/enchant/MagicInvisible.java | 37 ++++++++ .../jp/plusplus/fbs/magic/enchant/MagicJump.class | Bin 0 -> 1883 bytes .../jp/plusplus/fbs/magic/enchant/MagicJump.java | 45 +++++++++ .../plusplus/fbs/magic/enchant/MagicPoison.class | Bin 0 -> 2199 bytes .../jp/plusplus/fbs/magic/enchant/MagicPoison.java | 54 +++++++++++ .../fbs/magic/enchant/MagicRegeneration.class | Bin 0 -> 1434 bytes .../fbs/magic/enchant/MagicRegeneration.java | 35 +++++++ .../jp/plusplus/fbs/magic/enchant/MagicSpeed.class | Bin 0 -> 2010 bytes .../jp/plusplus/fbs/magic/enchant/MagicSpeed.java | 47 ++++++++++ .../jp/plusplus/fbs/magic/enchant/MagicWedge.class | Bin 0 -> 2758 bytes .../jp/plusplus/fbs/magic/enchant/MagicWedge.java | 71 ++++++++++++++ .../fbs/magic/resonance/FlexibleResonance.class | Bin 0 -> 2739 bytes .../fbs/magic/resonance/FlexibleResonance.java | 83 +++++++++++++++++ .../fbs/magic/resonance/ShapedResonance.class | Bin 0 -> 2392 bytes .../fbs/magic/resonance/ShapedResonance.java | 68 ++++++++++++++ 78 files changed, 1943 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicArrow.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicArrow.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicArrowFlexible.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicArrowFlexible.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicBarrier.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicBarrier.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicContract.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicContract.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicCopy.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicCopy.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicDig.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicDig.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicDigTouch.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicDigTouch.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicFailure.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicFailure.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicFireBolt.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicFireBolt.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicHarvest.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicHarvest.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicHealingBall.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicHealingBall.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicHealingSelf.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicHealingSelf.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicLoveHurricane.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicLoveHurricane.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicReturn.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicReturn.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicSummonVillager.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicSummonVillager.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicTimeAcc.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicTimeAcc.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicTimeTrace.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicTimeTrace.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicTouch.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicTouch.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicVortex.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicVortex.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicVortexFlexible.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicVortexFlexible.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicWarp.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicWarp.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicWish.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/MagicWish.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicButterfly.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicButterfly.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicCleverness.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicCleverness.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicContemporary.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicContemporary.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicContractEffect.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicContractEffect.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicDagon.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicDagon.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicDamageBoost.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicDamageBoost.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicEvolutionKing.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicEvolutionKing.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicFireArmor.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicFireArmor.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicInvisible.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicInvisible.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicJump.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicJump.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicPoison.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicPoison.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicRegeneration.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicRegeneration.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicSpeed.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicSpeed.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicWedge.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/enchant/MagicWedge.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.java create mode 100644 src/main/java/jp/plusplus/fbs/magic/resonance/ShapedResonance.class create mode 100644 src/main/java/jp/plusplus/fbs/magic/resonance/ShapedResonance.java (limited to 'src/main/java/jp/plusplus/fbs/magic') diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicArrow.class b/src/main/java/jp/plusplus/fbs/magic/MagicArrow.class new file mode 100644 index 0000000..6cdfa03 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/MagicArrow.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicArrow.java b/src/main/java/jp/plusplus/fbs/magic/MagicArrow.java new file mode 100644 index 0000000..dc7cb20 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicArrow.java @@ -0,0 +1,33 @@ +package jp.plusplus.fbs.magic; + +import jp.plusplus.fbs.api.MagicBase; +import jp.plusplus.fbs.entity.EntityMagicArrow; +import net.minecraft.entity.Entity; + +/** + * Createdby pluslus_Fon 2015/06/08. + */ +public class MagicArrow extends MagicBase { + @Override + public boolean checkSuccess() { + if(isSpelled) return true; + + float prob=0.4f+0.03f*property.getMagicLevel(); + return rand.nextFloat()<=prob; + } + + @Override + public void success() { + int d=getLvDiff(); + float dm=isSpelled?2.0f:1.0f; + if(d>0) dm+=0.5f*(d/5); + + Entity e=new EntityMagicArrow(world, player, 1.0F, 1.0F, dm); + world.spawnEntityInWorld(e); + } + + @Override + public void failure() { + sanity(1, 6); + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicArrowFlexible.class b/src/main/java/jp/plusplus/fbs/magic/MagicArrowFlexible.class new file mode 100644 index 0000000..e2ca74c Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/MagicArrowFlexible.class differ 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); + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicBarrier.class b/src/main/java/jp/plusplus/fbs/magic/MagicBarrier.class new file mode 100644 index 0000000..f69ebb4 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/MagicBarrier.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicBarrier.java b/src/main/java/jp/plusplus/fbs/magic/MagicBarrier.java new file mode 100644 index 0000000..65da382 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicBarrier.java @@ -0,0 +1,100 @@ +package jp.plusplus.fbs.magic; + +import jp.plusplus.fbs.api.MagicBase; +import jp.plusplus.fbs.block.BlockCore; +import net.minecraft.block.Block; +import net.minecraft.util.MathHelper; +import net.minecraftforge.common.util.ForgeDirection; + +/** + * Created by plusplus_F on 2015/09/27. + */ +public class MagicBarrier extends MagicBase { + @Override + public boolean checkSuccess() { + float p=0.5f+0.05f*Math.max(getLvDiff(), 0); + return rand.nextFloat()0) prob+=0.05*prob; + return rand.nextFloat()0) prob+=0.05*prob; + return rand.nextFloat()=20); + int till=getLvDiff(); + EntityMagicDig e=new EntityMagicDig(world, player, 0.6F, 1.0F, till, penetrate); + world.spawnEntityInWorld(e); + } + + @Override + public void failure() { + sanity(1, 6); + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicDigTouch.class b/src/main/java/jp/plusplus/fbs/magic/MagicDigTouch.class new file mode 100644 index 0000000..f486207 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/MagicDigTouch.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicDigTouch.java b/src/main/java/jp/plusplus/fbs/magic/MagicDigTouch.java new file mode 100644 index 0000000..ee44459 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicDigTouch.java @@ -0,0 +1,39 @@ +package jp.plusplus.fbs.magic; + +import jp.plusplus.fbs.api.MagicBase; +import net.minecraft.block.Block; +import net.minecraft.util.Vec3; + +/** + * Created by pluslus_F on 2015/06/19. + */ +public class MagicDigTouch extends MagicBase { + @Override + public boolean checkSuccess() { + if(isSpelled) return true; + float prob=0.4f; + int l=getLvDiff(); + if(l>0) prob+=0.05*l; + return rand.nextFloat()<=prob; + } + + @Override + public void success() { + int l=getLvDiff(); + Vec3 pos=getTouchPosition(); + if(pos==null) return; + + float hardness=30+1.0f+(l>0?0.5f*l:0); + + Block b=world.getBlock((int)pos.xCoord, (int)pos.yCoord,(int)pos.zCoord); + float bh=b.getBlockHardness(world, (int)pos.xCoord, (int)pos.yCoord,(int)pos.zCoord); + if(bh!=-1 && bh0) dm+=0.5f*(d/5); + + Entity e=new EntityMagicFireBolt(world, player, 1.0F, 1.0F, dm); + world.spawnEntityInWorld(e); + } + + @Override + public void failure() { + sanity(2, 4); + } + + @Override + public void enchant(EntityLivingBase entity, boolean success) { + if(success) entity.setFire(10); + } + + @Override + public float damageScale(EntityLivingBase entity) { + return 1.2f; + } + + @Override + public float damageValue(EntityLivingBase entity) { + return 0.f; + } + + @Override + public ParticleColor setParticleColor(){ + ParticleColor col=new ParticleColor(); + float v=0.5f+0.5f*rand.nextFloat(); + col.blue-=v; + col.green-=v; + return col; + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicHarvest.class b/src/main/java/jp/plusplus/fbs/magic/MagicHarvest.class new file mode 100644 index 0000000..e5d7eef Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/MagicHarvest.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicHarvest.java b/src/main/java/jp/plusplus/fbs/magic/MagicHarvest.java new file mode 100644 index 0000000..1998aa8 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicHarvest.java @@ -0,0 +1,92 @@ +package jp.plusplus.fbs.magic; + +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.api.MagicBase; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.MathHelper; + +import java.util.ArrayList; + +/** + * Created by plusplus_F on 2015/09/27. + */ +public class MagicHarvest extends MagicBase { + @Override + public boolean checkSuccess() { + if(!isSpelled || usingStaff) return false; + float r=0.15f+0.03f*Math.max(getLvDiff(), 0); + return rand.nextFloat() list=Registry.GetChestContents(1); + int valueSum=0; + for(Registry.ChestContent cc : list) valueSum+=cc.weight; + + //アイテムスタックのスタックサイズと数 + int min=1+ld/2; + int max=3+ld; + int amount=6+ld/2+rand.nextInt(ld+5); + + for(int i=0;iitem.getMaxStackSize()) item.stackSize=item.getMaxStackSize(); + + if(item.isItemEnchantable() && rand.nextInt(3)==0){ + EnchantmentHelper.addRandomEnchantment(rand, item, 3*ld+rand.nextInt(10)); + } + + EntityItem e=new EntityItem(world, x,h-1.5*rand.nextDouble(),z, item); + world.spawnEntityInWorld(e); + + break; + } + sum+=cc.weight; + } + } + } + + @Override + public void failure() { + + } + + @Override + public String getMagicCircleName(){ + return "fbs.harvest"; + } + + public int getHeight(){ + int x= MathHelper.floor_double(player.posX); + int y= MathHelper.floor_double(player.posY+player.getEyeHeight()); + int z= MathHelper.floor_double(player.posZ); + + if(world.getHeightValue(x,z)0) prob+=0.05f*d; + return rand.nextFloat()<=prob; + } + + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(8, 2); + int a = getAmplifier(8); + if(success){ + entity.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.heal.getId(), 1, a)); + } + else{ + entity.addPotionEffect(new PotionEffect(Potion.wither.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.harm.getId(), 1, a)); + } + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicLoveHurricane.class b/src/main/java/jp/plusplus/fbs/magic/MagicLoveHurricane.class new file mode 100644 index 0000000..bf7e683 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/MagicLoveHurricane.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicLoveHurricane.java b/src/main/java/jp/plusplus/fbs/magic/MagicLoveHurricane.java new file mode 100644 index 0000000..f6a43ce --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicLoveHurricane.java @@ -0,0 +1,54 @@ +package jp.plusplus.fbs.magic; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.item.ItemSword; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Vec3; + +import java.util.List; + +/** + * Created by plusplus_F on 2015/10/01. + * ピンチなら + * 扇いでみよう + * 大団扇 + */ +public class MagicLoveHurricane extends MagicVortex { + @Override + public boolean checkSuccess() { + return true; + } + + @Override + public void success() { + //効果範囲 + int size = isSpelled ? 2 : 1; + size += Math.max(getLvDiff(), 0) / 5; + + //ダメージ + float d = 8.0f + 0.5f * (Math.max(getLvDiff(), 0) / 3); + + //吹き飛ばし強さ + float knockback = 1.f + 0.08f * Math.max(getLvDiff(), 0); + + //効果範囲内の全てのEntityLivingBaseへ + List list = getEntities(size); + if (!list.isEmpty()) { + for (int i = 0; i < list.size(); i++) { + EntityLivingBase e = (EntityLivingBase) list.get(i); + if(e.getUniqueID()==player.getUniqueID()) continue; + + e.attackEntityFrom(DamageSource.causeIndirectMagicDamage(player, e), d); + + //方向の決定 + Vec3 vec = player.getPosition(1.f).subtract(e.getPosition(1.f)); + vec.yCoord = 0; + vec = vec.normalize(); + + //飛ばす + e.addVelocity(knockback * vec.xCoord, 0, knockback * vec.zCoord); + } + } + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicReturn.class b/src/main/java/jp/plusplus/fbs/magic/MagicReturn.class new file mode 100644 index 0000000..14fcc13 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/MagicReturn.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicReturn.java b/src/main/java/jp/plusplus/fbs/magic/MagicReturn.java new file mode 100644 index 0000000..633b6d1 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicReturn.java @@ -0,0 +1,53 @@ +package jp.plusplus.fbs.magic; + +import jp.plusplus.fbs.api.MagicBase; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.StatCollector; + +/** + * Createdby pluslus_Fon 2015/06/14. + */ +public class MagicReturn extends MagicBase { + @Override + public boolean checkSuccess() { + if(!isSpelled) return false; + + float prob=0.4f+0.02f*property.getMagicLevel(); + return rand.nextFloat()<=prob; + } + + @Override + public void success() { + //EntityClientPlayerMP + //player.respawnPlayer(); + ChunkCoordinates pos=player.getBedLocation(0); + if(pos==null){ + pos=world.getSpawnPoint(); + pos.posY=world.getChunkFromBlockCoords(pos.posX, pos.posZ).getHeightValue(pos.posX%16, pos.posZ%16); + } + else{ + Block b0=world.getBlock(pos.posX+1, pos.posY, pos.posZ); + Block b1=world.getBlock(pos.posX, pos.posY, pos.posZ+1); + Block b2=world.getBlock(pos.posX-1, pos.posY, pos.posZ); + Block b3=world.getBlock(pos.posX, pos.posY, pos.posZ-1); + + Block b4=world.getBlock(pos.posX, pos.posY+1, pos.posZ); + + if((b0!=Blocks.bed && b1!=Blocks.bed && b2!=Blocks.bed && b3!=Blocks.bed) || b4.getMaterial()!=Material.air){ + pos=world.getSpawnPoint(); + pos.posY=world.getChunkFromBlockCoords(pos.posX, pos.posZ).getHeightValue(pos.posX%16, pos.posZ%16); + player.addChatComponentMessage(new ChatComponentText(StatCollector.translateToLocal("tile.bed.notValid"))); + } + } + player.setPositionAndUpdate(pos.posX, pos.posY+0.2, pos.posZ); + } + + @Override + public void failure() { + sanity(2, 6); + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicSummonVillager.class b/src/main/java/jp/plusplus/fbs/magic/MagicSummonVillager.class new file mode 100644 index 0000000..2e82f6b Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/MagicSummonVillager.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicSummonVillager.java b/src/main/java/jp/plusplus/fbs/magic/MagicSummonVillager.java new file mode 100644 index 0000000..93dd08f --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicSummonVillager.java @@ -0,0 +1,66 @@ +package jp.plusplus.fbs.magic; + +import cpw.mods.fml.common.registry.VillagerRegistry; +import jp.plusplus.fbs.api.MagicBase; +import jp.plusplus.fbs.block.BlockCore; +import jp.plusplus.fbs.entity.EntityMagicAuthor; +import net.minecraft.block.Block; +import net.minecraft.entity.passive.EntityVillager; +import net.minecraft.util.MathHelper; + +/** + * Created by plusplus_F on 2015/09/27. + */ +public class MagicSummonVillager extends MagicBase { + public static final int BOOKSHELF=24; + + @Override + public boolean checkSuccess() { + return false; + } + + @Override + public String getMagicCircleName(){ + return "fbs.summonVillager"; + } + + @Override + public void success() { + sanity(2,6); + + //魔法陣の周囲の本棚を数える + int x= MathHelper.floor_double(player.posX); + int y= MathHelper.floor_double(player.posY); + int z= MathHelper.floor_double(player.posZ); + int count=0; + for(int k=0;k<2;k++){ + for(int i=0;i<5;i++){ + if(world.getBlock(x-2+i, y+k, z-2)==BlockCore.bookshelf) count++; + if(world.getBlock(x-2+i, y+k, z+2)==BlockCore.bookshelf) count++; + } + for(int i=0;i<3;i++){ + if(world.getBlock(x-2, y+k, z-1+i)==BlockCore.bookshelf) count++; + if(world.getBlock(x+2, y+k, z-1+i)==BlockCore.bookshelf) count++; + } + } + + //本棚が一定数以上あれば作家を湧かせる + if(count>=BOOKSHELF){ + EntityMagicAuthor e=new EntityMagicAuthor(world); + e.setPosition(player.posX+2*rand.nextFloat(), player.posY, player.posZ+2*rand.nextFloat()); + world.spawnEntityInWorld(e); + } + else{ + //通常の処理 + EntityVillager e=new EntityVillager(world, rand.nextInt(5+VillagerRegistry.getRegisteredVillagers().size())); + e.setPosition(player.posX+2*rand.nextFloat(), player.posY, player.posZ+2*rand.nextFloat()); + world.spawnEntityInWorld(e); + } + + } + + @Override + public void failure() { + sanity(3, 8); + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicTimeAcc.class b/src/main/java/jp/plusplus/fbs/magic/MagicTimeAcc.class new file mode 100644 index 0000000..d28fffa Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/MagicTimeAcc.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicTimeAcc.java b/src/main/java/jp/plusplus/fbs/magic/MagicTimeAcc.java new file mode 100644 index 0000000..4151280 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicTimeAcc.java @@ -0,0 +1,49 @@ +package jp.plusplus.fbs.magic; + +import jp.plusplus.fbs.api.MagicBase; +import net.minecraft.block.Block; +import net.minecraft.block.IGrowable; + +/** + * Createdby pluslus_Fon 2015/06/14. + */ +public class MagicTimeAcc extends MagicBase { + @Override + public boolean checkSuccess() { + float prob=0.5f+0.025f*(property.getMagicLevel()-bookData.lv); + return rand.nextFloat()<=prob; + } + + @Override + public void success() { + int range=isSpelled?2:1; + int l=getLvDiff(); + if(l>0) range+=l/4; + + int cx=(int)player.posX, cy=(int)player.posY, cz=(int)player.posZ; + for(int i=cx-range;i0) range+=l/4; + + int cx=(int)player.posX, cy=(int)player.posY, cz=(int)player.posZ; + for(int i=cx-range;i0) d+=0.5*(lv/5); + if(!isSpelled) d/=2.0f; + e.attackEntityFrom(DamageSource.causeIndirectMagicDamage(player, (EntityLivingBase)e), d); + } + } + + @Override + public void failure() { + sanity(1,4); + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.class b/src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.class new file mode 100644 index 0000000..8b966b8 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.java b/src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.java new file mode 100644 index 0000000..f665449 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/MagicTouchFlexible.java @@ -0,0 +1,83 @@ +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.item.ItemCore; +import jp.plusplus.fbs.item.ItemStaff; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; + +import java.util.LinkedList; + +/** + * Created by pluslus_F on 2015/06/23. + * 魔法の拳+付与魔法の汎用共鳴 + */ +public class MagicTouchFlexible 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; + + Entity e=getTouchEntity(); + if(e instanceof EntityLivingBase){ + float d=3.0f; + int lv=getLvDiff(); + if(lv>0) d+=0.5*(lv/5); + if(!isSpelled) d/=2.0f; + + float dValue=0.f; + float dScale=1.f; + + //IMagicEnchantのインスタンス化 + //スタッフによる使用なので常に詠唱破棄状態 + IMagicEnchant[] me=new IMagicEnchant[magics.size()]; + for(int i=0;i 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); + + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setString("MagicName", md.title); + tagList.appendTag(nbt1); + } + } + } + if (magics.isEmpty()) return; + + //効果範囲 + int size=isSpelled?2:1; + size+=Math.max(getLvDiff(), 0)/5; + + //ダメージ + float d=3.0f+0.5f*(Math.max(getLvDiff(), 0)/3); + if(!isSpelled) d/=2.f; + + //効果範囲内の全てのEntityLivingBaseへ + List list=getEntities(size); + if(!list.isEmpty()){ + + //付与魔法のインスタンス化 + IMagicEnchant[] me=new IMagicEnchant[magics.size()]; + for(int i=0;i0) prob+=0.05f*d; + return rand.nextFloat()<=prob; + } + + @Override + public ParticleColor setParticleColor(){ + ParticleColor col=new ParticleColor(); + float v=0.1f+0.3f*rand.nextFloat(); + col.blue-=v; + col.red-=v; + col.green=0; + return col; + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicCleverness.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicCleverness.class new file mode 100644 index 0000000..f82bfdd Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicCleverness.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicCleverness.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicCleverness.java new file mode 100644 index 0000000..ee43203 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicCleverness.java @@ -0,0 +1,33 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/11/09. + */ +public class MagicCleverness extends MagicEnchantBase { + public MagicCleverness() { + super(1, 6); + } + + @Override + public boolean checkSuccess() { + int d=getLvDiff(); + float prob=isSpelled?0.5f:0.3f; + if(d>0) prob+=0.08f*d; + return rand.nextFloat()<=prob; + } + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(90, 0.5f); + int a = getAmplifier(7); + + if(success){ + if(this.isSpelled) d+=120*20; + entity.addPotionEffect(new PotionEffect(Registry.potionCleverness.getId(), d, a)); + } + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContemporary.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContemporary.class new file mode 100644 index 0000000..210fa11 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContemporary.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContemporary.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContemporary.java new file mode 100644 index 0000000..5d9d7a1 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContemporary.java @@ -0,0 +1,40 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/09/19. + */ +public class MagicContemporary extends MagicEnchantBase { + public MagicContemporary() { + super(3, 10); + } + + @Override + public boolean checkSuccess() { + int d=getLvDiff(); + float prob=isSpelled?0.6f:0.2f; + if(d>0) prob+=0.08f*d; + return rand.nextFloat()<=prob; + } + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(180, 1); + int a = getAmplifier(8); + + if(success){ + if(this.isSpelled) d+=60*20; + entity.addPotionEffect(new PotionEffect(Potion.fireResistance.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.resistance.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), d, a)); + } + else{ + entity.addPotionEffect(new PotionEffect(Potion.weakness.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.digSlowdown.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.blindness.getId(), d, a)); + } + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContractEffect.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContractEffect.class new file mode 100644 index 0000000..5746735 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContractEffect.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContractEffect.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContractEffect.java new file mode 100644 index 0000000..392fa49 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicContractEffect.java @@ -0,0 +1,34 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/11/09. + */ +public class MagicContractEffect extends MagicEnchantBase { + public MagicContractEffect() { + super(3, 10); + } + + @Override + public boolean checkSuccess() { + int d=getLvDiff(); + float prob=isSpelled?0.5f:0.3f; + if(d>0) prob+=0.08f*d; + return rand.nextFloat()<=prob; + } + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(90, 0.5f); + int a = getAmplifier(8); + + if(success){ + if(this.isSpelled) d+=120*20; + entity.addPotionEffect(new PotionEffect(Registry.potionContract.getId(), d, a)); + } + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDagon.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDagon.class new file mode 100644 index 0000000..e185525 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDagon.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDagon.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDagon.java new file mode 100644 index 0000000..80dcf5c --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDagon.java @@ -0,0 +1,34 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/09/19. + */ +public class MagicDagon extends MagicEnchantBase { + public MagicDagon() { + super(4, 6); + } + + @Override + public boolean checkSuccess() { + int d=getLvDiff(); + float prob=isSpelled?0.5f:0.3f; + if(d>0) prob+=0.08f*d; + return rand.nextFloat()<=prob; + } + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(90, 0.5f); + int a = getAmplifier(8); + + if(success){ + if(this.isSpelled) d+=120*20; + entity.addPotionEffect(new PotionEffect(Potion.waterBreathing.getId(), d, a)); + } + else entity.addPotionEffect(new PotionEffect(Potion.weakness.getId(), d, a)); + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDamageBoost.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDamageBoost.class new file mode 100644 index 0000000..76bc834 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDamageBoost.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDamageBoost.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDamageBoost.java new file mode 100644 index 0000000..73422fd --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicDamageBoost.java @@ -0,0 +1,34 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/06/16. + */ +public class MagicDamageBoost extends MagicEnchantBase { + public MagicDamageBoost() { + super(4, 6); + } + + @Override + public boolean checkSuccess() { + int d=getLvDiff(); + float prob=isSpelled?0.5f:0.3f; + if(d>0) prob+=0.08f*d; + return rand.nextFloat()<=prob; + } + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(60, 0.3f); + int a = getAmplifier(8); + + if(success){ + if(this.isSpelled) d+=60*20; + entity.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), d, a)); + } + else entity.addPotionEffect(new PotionEffect(Potion.weakness.getId(), d, a)); + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicEvolutionKing.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicEvolutionKing.class new file mode 100644 index 0000000..75b8880 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicEvolutionKing.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicEvolutionKing.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicEvolutionKing.java new file mode 100644 index 0000000..546817d --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicEvolutionKing.java @@ -0,0 +1,39 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/06/14. + */ +public class MagicEvolutionKing extends MagicEnchantBase { + public MagicEvolutionKing() { + super(4, 6); + } + + @Override + public boolean checkSuccess() { + float prob=(isSpelled?0.6f:0.2f)+0.05f*(property.getMagicLevel()-bookData.lv); + return rand.nextFloat()<=prob; + } + + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(60, 2); + int a = getAmplifier(5); + + if(success){ + if(this.isSpelled) d+=30*20; + entity.addPotionEffect(new PotionEffect(Potion.damageBoost.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.resistance.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.field_76434_w.getId(), d, a)); + } + else{ + entity.addPotionEffect(new PotionEffect(Potion.weakness.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.wither.getId(), d/5, a)); + } + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicFireArmor.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicFireArmor.class new file mode 100644 index 0000000..7e8087e Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicFireArmor.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicFireArmor.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicFireArmor.java new file mode 100644 index 0000000..850f611 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicFireArmor.java @@ -0,0 +1,42 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/09/19. + */ +public class MagicFireArmor extends MagicEnchantBase { + public MagicFireArmor() { + super(4, 6); + } + + @Override + public boolean checkSuccess() { + int d=getLvDiff(); + float prob=isSpelled?0.5f:0.3f; + if(d>0) prob+=0.08f*d; + return rand.nextFloat()<=prob; + } + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(60, 1); + int a = getAmplifier(8); + + if(success){ + if(this.isSpelled) d+=30*20; + entity.addPotionEffect(new PotionEffect(Potion.fireResistance.getId(), d, a)); + } + else entity.addPotionEffect(new PotionEffect(Potion.weakness.getId(), d, a)); + } + + @Override + public ParticleColor setParticleColor(){ + ParticleColor col=new ParticleColor(); + col.green-=0.3f+0.25f*rand.nextFloat(); + col.blue-=0.7f+0.3f*rand.nextFloat(); + return col; + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicInvisible.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicInvisible.class new file mode 100644 index 0000000..d349c08 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicInvisible.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicInvisible.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicInvisible.java new file mode 100644 index 0000000..41a06d8 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicInvisible.java @@ -0,0 +1,37 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/09/19. + */ +public class MagicInvisible extends MagicEnchantBase { + public MagicInvisible() { + super(4, 6); + } + + @Override + public boolean checkSuccess() { + int d=getLvDiff(); + float prob=isSpelled?0.5f:0.3f; + if(d>0) prob+=0.08f*d; + return rand.nextFloat()<=prob; + } + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(60, 2); + int a = getAmplifier(4); + + if(success){ + if(this.isSpelled) d+=30*20; + entity.addPotionEffect(new PotionEffect(Potion.invisibility.getId(), d, a)); + } + else{ + entity.addPotionEffect(new PotionEffect(Potion.weakness.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.blindness.getId(), d, a)); + } + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicJump.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicJump.class new file mode 100644 index 0000000..100baab Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicJump.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicJump.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicJump.java new file mode 100644 index 0000000..1f5d89a --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicJump.java @@ -0,0 +1,45 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.network.play.server.S12PacketEntityVelocity; + +/** + * Createdby pluslus_Fon 2015/09/18. + */ +public class MagicJump extends MagicEnchantBase { + public MagicJump() { + super(2, 6); + } + + @Override + public boolean checkSuccess() { + int d=getLvDiff(); + float prob=isSpelled?0.35f:0.1f; + if(d>0) prob+=0.05f*d; + return rand.nextFloat()<=prob; + } + + @Override + public void enchant(EntityLivingBase entity, boolean success) { + if(!entity.onGround) return; + + int v=getLvDiff(); + double d=0.5+Math.max(0, v*0.05); + if(entity instanceof EntityPlayerMP){ + if(!success) d*=2; + entity.addVelocity(0, d-player.motionY, 0); + ((EntityPlayerMP) entity).playerNetServerHandler.sendPacket(new S12PacketEntityVelocity(entity)); + } + else{ + if(!success) d*=0.5; + entity.addVelocity(0, d-player.motionY, 0); + } + } + + @Override + public float damageScale(EntityLivingBase entity){ + return 0.5f; + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicPoison.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicPoison.class new file mode 100644 index 0000000..b7f66c1 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicPoison.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicPoison.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicPoison.java new file mode 100644 index 0000000..46c0c87 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicPoison.java @@ -0,0 +1,54 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/10/22. + */ +public class MagicPoison extends MagicEnchantBase { + public MagicPoison() { + super(4, 6); + } + + @Override + public boolean checkSuccess() { + if(!isSpelled) return false; + + float prob=0.4f+0.02f*property.getMagicLevel(); + return rand.nextFloat()<=prob; + } + + @Override + public void success() { + Entity e=getTouchEntity(); + if(e instanceof EntityLivingBase){ + enchant((EntityLivingBase)e, true); + } + } + + + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(5, 3); + int a = getAmplifier(10); + + if(success){ + if(isSpelled) d+=3*20; + entity.addPotionEffect(new PotionEffect(Potion.poison.getId(), d, a)); + } + } + + @Override + public ParticleColor setParticleColor(){ + ParticleColor col=new ParticleColor(); + float v=0.1f+0.5f*rand.nextFloat(); + col.blue-=v; + col.red-=v; + col.green=0; + return col; + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicRegeneration.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicRegeneration.class new file mode 100644 index 0000000..418570f Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicRegeneration.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicRegeneration.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicRegeneration.java new file mode 100644 index 0000000..b0c5ffb --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicRegeneration.java @@ -0,0 +1,35 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/06/16. + */ +public class MagicRegeneration extends MagicEnchantBase { + public MagicRegeneration() { + super(4, 6); + } + + @Override + public boolean checkSuccess() { + int d=getLvDiff(); + float prob=isSpelled?0.35f:0.1f; + if(d>0) prob+=0.05f*d; + return rand.nextFloat()<=prob; + } + + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(10, 2); + int a = getAmplifier(8); + + if(success){ + if(this.isSpelled) d+=5*20; + entity.addPotionEffect(new PotionEffect(Potion.regeneration.getId(), d, a)); + } + else entity.addPotionEffect(new PotionEffect(Potion.wither.getId(), d, a)); + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicSpeed.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicSpeed.class new file mode 100644 index 0000000..71a7997 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicSpeed.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicSpeed.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicSpeed.java new file mode 100644 index 0000000..36cc369 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicSpeed.java @@ -0,0 +1,47 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.MagicEnchantBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/06/08. + */ +public class MagicSpeed extends MagicEnchantBase { + public MagicSpeed() { + super(4, 6); + } + + @Override + public boolean checkSuccess() { + if(!isSpelled) return false; + + float prob=0.4f+0.02f*property.getMagicLevel(); + return rand.nextFloat()<=prob; + } + + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int d = getDuration(30, 1); + int a = getAmplifier(8); + + if(success){ + if(isSpelled) d+=120*20; + entity.addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(), d, a)); + entity.addPotionEffect(new PotionEffect(Potion.jump.getId(), d, a)); + } + else{ + entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.getId(), d, a)); + } + } + + @Override + public ParticleColor setParticleColor(){ + ParticleColor col=new ParticleColor(); + float v=0.1f+0.5f*rand.nextFloat(); + col.blue-=v; + col.red-=v; + return col; + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicWedge.class b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicWedge.class new file mode 100644 index 0000000..f560bb9 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicWedge.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/enchant/MagicWedge.java b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicWedge.java new file mode 100644 index 0000000..eefe3bd --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/enchant/MagicWedge.java @@ -0,0 +1,71 @@ +package jp.plusplus.fbs.magic.enchant; + +import jp.plusplus.fbs.api.IMagicEnchant; +import jp.plusplus.fbs.api.MagicBase; +import jp.plusplus.fbs.entity.EntityMagicWedge; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +/** + * Createdby pluslus_Fon 2015/06/14. + */ +public class MagicWedge extends MagicBase implements IMagicEnchant { + @Override + public boolean checkSuccess() { + if(isSpelled) return true; + + float prob=0.4f+0.03f*property.getMagicLevel(); + return rand.nextFloat()<=prob; + } + + @Override + public void success() { + int l=getLvDiff(); + int eLv=1; + int eDu=20*(isSpelled?20:10); + float dm=isSpelled?1.0f:0.5f; + if(l>0){ + eLv+=l/5; + eDu+=20*(l/2); + dm+=0.5f*(l/8); + } + + Entity e=new EntityMagicWedge(world, player, 1.0F, 1.0F, dm, eLv, eDu); + world.spawnEntityInWorld(e); + } + + @Override + public void failure() { + sanity(1,6); + } + + @Override + public void enchant(EntityLivingBase entity, boolean success) { + int l=getLvDiff(); + int eLv=1; + int eDu=20*(isSpelled?20:10); + if(l>0){ + eLv+=l/5; + eDu+=20*(l/2); + } + + entity.addPotionEffect(new PotionEffect(Potion.weakness.getId(), eDu, eLv)); + } + + @Override + public float damageScale(EntityLivingBase entity) { + return 0.75f; + } + + @Override + public float damageValue(EntityLivingBase entity) { + return 0.f; + } + + @Override + public ParticleColor setParticleColor() { + return new ParticleColor(); + } +} diff --git a/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.class b/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.class new file mode 100644 index 0000000..f7045b1 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.class differ diff --git a/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.java b/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.java new file mode 100644 index 0000000..65b89b1 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/magic/resonance/FlexibleResonance.java @@ -0,0 +1,83 @@ +package jp.plusplus.fbs.magic.resonance; + +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.api.IMagicEnchant; +import jp.plusplus.fbs.api.IResonance; +import net.minecraft.util.StatCollector; + +import java.util.LinkedList; + +/** + * Created by pluslus_F on 2015/06/23. + * 特定の魔導書+付与魔法1個以上による共鳴 + * 付与魔法が複数ある場合は全てに対して動作するように魔法は実装してね + */ +public class FlexibleResonance implements IResonance { + public String type; //ベースとなる魔法のタイプ + + public LinkedList enchants=new LinkedList(); + public Registry.MagicData base; + + public FlexibleResonance(String type){ + this.type=type; + } + + + @Override + public IResonance copy() { + return new FlexibleResonance(type); + } + + @Override + public boolean isMatch(Registry.MagicData[] magics) { + boolean foundBase=false; + boolean foundEnchant=false; + for(Registry.MagicData md : magics){ + + //ベースとなる魔法の判定。ベースが2つ以上あればfalse + if(md.title.equals(type)){ + if(foundBase) return false; + foundBase=true; + } + + //付与魔法ならフラグを立てる + if(IMagicEnchant.class.isAssignableFrom(md.magic)){ + foundEnchant=true; + } + } + + return foundBase && foundEnchant; + } + + @Override + public String getResonanceMagicName() { + return "resonance."+type; + } + + @Override + public String getDisplayMagicName(String[] titles){ + String sss=StatCollector.translateToLocal("magic.suffix."+type); + String ppp=null; + + for(int i=0;i list=new LinkedList(); + for(int i=0;i it=list.iterator(); + while(it.hasNext()){ + String t=it.next(); + if(t.equals(bd.title)){ + find=true; + it.remove(); + break; + } + } + + if(!find) return false; + } + + return list.isEmpty(); + } + + @Override + public String getResonanceMagicName() { + return title; + } + @Override + public String getDisplayMagicName(String[] titles){ + return Registry.GetLocalizedBookTitle(title); + } + + @Override + public int priority() { + return 100; + } +} -- cgit v1.2.3