diff options
Diffstat (limited to 'src/main/java/jp/plusplus/fbs/container/ContainerContract.java')
| -rw-r--r-- | src/main/java/jp/plusplus/fbs/container/ContainerContract.java | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/main/java/jp/plusplus/fbs/container/ContainerContract.java b/src/main/java/jp/plusplus/fbs/container/ContainerContract.java new file mode 100644 index 0000000..56a431b --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/container/ContainerContract.java @@ -0,0 +1,91 @@ +package jp.plusplus.fbs.container;
+
+import jp.plusplus.fbs.AchievementRegistry;
+import jp.plusplus.fbs.Registry;
+import jp.plusplus.fbs.container.inventory.InventoryContract;
+import jp.plusplus.fbs.container.slot.SlotBonfire;
+import jp.plusplus.fbs.container.slot.SlotContract;
+import jp.plusplus.fbs.container.slot.SlotInventory;
+import jp.plusplus.fbs.container.slot.SlotTakeOnly;
+import jp.plusplus.fbs.item.ItemBookSorcery;
+import jp.plusplus.fbs.item.ItemStoneSpirit;
+import jp.plusplus.fbs.spirit.SpiritManager;
+import jp.plusplus.fbs.spirit.SpiritStatus;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+/**
+ * Created by plusplus_F on 2015/11/14.
+ */
+public class ContainerContract extends Container {
+ public EntityPlayer player;
+ public InventoryContract inventory;
+
+ public ContainerContract(EntityPlayer player){
+ inventory=new InventoryContract(player);
+ inventory.openInventory();
+
+ for(int i=0;i<2;i++){
+ addSlotToContainer(new SlotContract(inventory, i, 26+18*i, 46, i));
+ }
+ addSlotToContainer(new SlotContract(inventory, 2, 98, 23, 2));
+ addSlotToContainer(new SlotTakeOnly(inventory, 3, 133, 40));
+
+ //player's inv
+ for (int j = 0; j < 3; ++j) {
+ for (int k = 0; k < 9; ++k) {
+ this.addSlotToContainer(new SlotInventory(player.inventory, k + j * 9 + 9, 8 + k * 18, 84 + j * 18, 2));
+ }
+ }
+
+ for (int j = 0; j < 9; ++j) {
+ this.addSlotToContainer(new SlotInventory(player.inventory, j, 8 + j * 18, 142, 2));
+ }
+ }
+
+ @Override
+ public boolean canInteractWith(EntityPlayer p_75145_1_) {
+ return true;
+ }
+
+ @Override
+ public void onContainerClosed(EntityPlayer p_75134_1_) {
+ super.onContainerClosed(p_75134_1_);
+ this.inventory.closeInventory();
+ }
+
+ public boolean canContract(){
+ if(inventory.itemStacks[0]==null || !SpiritManager.isTool(inventory.itemStacks[0].getItem())) return false;
+ if(inventory.itemStacks[1]==null || !(inventory.itemStacks[1].getItem() instanceof ItemStoneSpirit)) return false;
+ if(inventory.itemStacks[2]==null) return false;
+ Registry.BookData bd=Registry.GetBookDataFromItemStack(inventory.itemStacks[2]);
+ return bd!=null && bd.title.equals("fbs.contract") && ItemBookSorcery.getMagicMaxUse(inventory.itemStacks[2])>0 && inventory.itemStacks[3]==null;
+ }
+
+ public String contract(String name, EntityPlayer player){
+ if(!canContract()) return null;
+ SpiritManager.ToolEntry te=SpiritManager.getTool(inventory.itemStacks[0].getItem());
+ if(te!=null){
+ boolean m=((ItemStoneSpirit)inventory.itemStacks[1].getItem()).getSex();
+ inventory.setInventorySlotContents(3, te.getSpiritToolStack(m, SpiritManager.getRandomCharacter(m), name, player, inventory.itemStacks[0]));
+ inventory.setInventorySlotContents(0, null);
+ inventory.setInventorySlotContents(1, null);
+ ItemBookSorcery.reduceMagicMaxUse(inventory.itemStacks[2]);
+
+ if(!player.worldObj.isRemote) player.triggerAchievement(AchievementRegistry.contract);
+
+ SpiritStatus status=SpiritStatus.readFromNBT(inventory.itemStacks[3].getTagCompound());
+ SpiritManager.talk(player, status.getCharacter(), "first", inventory.itemStacks[3]);
+ return status.getCharacter();
+ }
+ return null;
+ }
+
+ @Override
+ public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) {
+ ItemStack itemStack = null;
+ return itemStack;
+ }
+}
|
