diff options
Diffstat (limited to 'src/main/java/jp/plusplus/fbs/container/inventory/InventoryMagicCopy.java')
| -rw-r--r-- | src/main/java/jp/plusplus/fbs/container/inventory/InventoryMagicCopy.java | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/src/main/java/jp/plusplus/fbs/container/inventory/InventoryMagicCopy.java b/src/main/java/jp/plusplus/fbs/container/inventory/InventoryMagicCopy.java new file mode 100644 index 0000000..482ffc6 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/container/inventory/InventoryMagicCopy.java @@ -0,0 +1,108 @@ +package jp.plusplus.fbs.container.inventory;
+
+import jp.plusplus.fbs.FBS;
+import jp.plusplus.fbs.Registry;
+import jp.plusplus.fbs.container.ContainerMagic;
+import jp.plusplus.fbs.container.slot.SlotMagic;
+import jp.plusplus.fbs.container.slot.SlotMagicCopy;
+import jp.plusplus.fbs.container.slot.SlotMagicTakeOnly;
+import jp.plusplus.fbs.exprop.SanityManager;
+import jp.plusplus.fbs.item.ItemBookSorcery;
+import jp.plusplus.fbs.api.MagicBase;
+import jp.plusplus.fbs.tileentity.TileEntityMagicCore;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.util.ResourceLocation;
+
+/**
+ * Created by pluslus_F on 2015/06/18.
+ */
+public class InventoryMagicCopy extends InventoryMagic {
+ public static final ResourceLocation rl=new ResourceLocation(FBS.MODID, "textures/gui/magicCopy.png");
+
+ public InventoryMagicCopy(TileEntityMagicCore te, EntityPlayer player) {
+ super(4, te, player);
+ }
+
+ @Override
+ public void work() {
+ if(itemStacks[0]==null) return;
+
+ //コピー魔法が無かったら
+ MagicBase mb=Registry.GetMagic("fbs.copy").getMagic(this.player.worldObj, this.player, true);
+ if(mb==null) return;
+
+ boolean crm=player.capabilities.isCreativeMode;
+
+ if(crm || mb.checkSuccess()){
+ //クリエイティブか、魔法に成功すると
+ for(int i=1;i<3;i++){
+ if(itemStacks[i]==null){
+ itemStacks[i]=itemStacks[0].copy();
+ }
+ else if(itemStacks[i].isItemEqual(itemStacks[0])){
+ itemStacks[i].stackSize++;
+ }
+ }
+ }
+ else {
+ SanityManager.loseSanity(player, 2, 10, true);
+ if(itemStacks[1]==null) itemStacks[1]=itemStacks[0];
+ else if(itemStacks[1].isItemEqual(itemStacks[0])) itemStacks[1].stackSize++;
+ }
+
+ //魔導書の回数を減らす
+ if(itemStacks[3]!=null && !crm) ItemBookSorcery.reduceMagicMaxUse(itemStacks[3]);
+
+ itemStacks[0]=null;
+ onInventoryChanged(0);
+ }
+
+ @Override
+ public void onInventoryChanged(int index) {
+ //FMLLog.info("changed");
+
+ //増やしたいアイテムが無い場合、魔導書が無い場合進捗を無に帰す
+ if (itemStacks[0] == null || itemStacks[3] == null) {
+ magicCore.resetProgress();
+ //FMLLog.info("item null");
+ return;
+ }
+
+ //本がおかしくても進捗を無に帰す
+ Registry.BookData bd = Registry.GetBookDataFromItemStack(itemStacks[3]);
+ if (bd == null || !bd.title.equals("fbs.copy") || ItemBookSorcery.getMagicMaxUse(itemStacks[3]) <= 0) {
+ magicCore.resetProgress();
+ return;
+ }
+
+ //増やせそうにない場合も進捗を無に帰す
+ for (int i = 1; i < 3; i++) {
+ if (itemStacks[i] == null) continue;
+ if (!itemStacks[i].isItemEqual(itemStacks[0]) || itemStacks[i].stackSize + 1 > itemStacks[i].getMaxStackSize()) {
+ magicCore.resetProgress();
+ return;
+ }
+ }
+
+ //進捗の最大値を設定する
+ magicCore.setProgressMax(20 * 10);
+ }
+
+ @Override
+ public void addSlotToContainer(ContainerMagic cm) {
+ cm.addSlotToContainer(new SlotMagicCopy(this, 0, 44, 36));
+ cm.addSlotToContainer(new SlotMagicTakeOnly(this, 1, 103, 36));
+ cm.addSlotToContainer(new SlotMagicTakeOnly(this, 2, 129, 36));
+ cm.addSlotToContainer(new SlotMagic(this, 3, 72, 17));
+ }
+
+ @Override
+ public ResourceLocation getResource() {
+ return rl;
+ }
+
+ @Override
+ public String getInventoryName() {
+ return Registry.GetLocalizedBookTitle("fbs.copy");
+ }
+}
|
