summaryrefslogtreecommitdiff
path: root/src/main/java/jp/plusplus/fbs/container/slot
diff options
context:
space:
mode:
authorBenjamin Culkin <scorpress@gmail.com>2024-08-24 08:16:37 -0400
committerBenjamin Culkin <scorpress@gmail.com>2024-08-24 08:16:37 -0400
commit70c1354a4a96698758a88c032866288f79de6f5a (patch)
treeeca51294e84b90a4cb3230bc2c7900469e784184 /src/main/java/jp/plusplus/fbs/container/slot
Initial commitHEADtrunk
Diffstat (limited to 'src/main/java/jp/plusplus/fbs/container/slot')
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotBonfire.classbin0 -> 1666 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotBonfire.java46
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotContract.classbin0 -> 1572 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotContract.java49
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotCrafting.classbin0 -> 3758 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotCrafting.java81
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotCraftingPottery.classbin0 -> 3490 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotCraftingPottery.java78
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotInventory.classbin0 -> 2327 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotInventory.java49
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotMagic.classbin0 -> 887 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotMagic.java20
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotMagicCopy.classbin0 -> 914 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotMagicCopy.java25
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTakeOnly.classbin0 -> 735 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTakeOnly.java20
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTimeTrace.classbin0 -> 1132 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTimeTrace.java28
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotShowOnly.classbin0 -> 865 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotShowOnly.java25
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnly.classbin0 -> 2420 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnly.java53
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnlyWithMagicEXP.classbin0 -> 2662 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnlyWithMagicEXP.java65
24 files changed, 539 insertions, 0 deletions
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotBonfire.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotBonfire.class
new file mode 100644
index 0000000..55fb95a
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotBonfire.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotBonfire.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotBonfire.java
new file mode 100644
index 0000000..876f09a
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotBonfire.java
@@ -0,0 +1,46 @@
+package jp.plusplus.fbs.container.slot;
+
+import jp.plusplus.fbs.alchemy.AlchemyRegistry;
+import jp.plusplus.fbs.alchemy.IAlchemyMaterial;
+import net.minecraft.init.Items;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import shift.mceconomy2.api.MCEconomyAPI;
+
+/**
+ * Created by plusplus_F on 2015/10/31.
+ */
+public class SlotBonfire extends Slot{
+ protected int type;
+
+ public SlotBonfire(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_, int type) {
+ super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
+ this.type=type;
+ }
+
+ public boolean isItemValid(ItemStack itemStack) {
+ if(type==0){
+ //焼くもの
+ if(itemStack.isItemStackDamageable()){
+ ItemStack it = itemStack.copy();
+ it.setItemDamage(0);
+ return MCEconomyAPI.getPurchase(it) >= 0 || itemStack.isItemEnchanted();
+ }
+ else {
+ return MCEconomyAPI.getPurchase(itemStack)>=0 || itemStack.isItemEnchanted() || itemStack.getItem()== Items.enchanted_book;
+ }
+ }
+ if(type==1){
+ //ハーブ
+ Item item=itemStack.getItem();
+ if(!(item instanceof IAlchemyMaterial)) return false;
+ return AlchemyRegistry.IsMatching("herb", itemStack);
+ }
+
+ return true;
+ }
+
+
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotContract.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotContract.class
new file mode 100644
index 0000000..ee7d789
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotContract.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotContract.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotContract.java
new file mode 100644
index 0000000..673b886
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotContract.java
@@ -0,0 +1,49 @@
+package jp.plusplus.fbs.container.slot;
+
+import jp.plusplus.fbs.Registry;
+import jp.plusplus.fbs.alchemy.AlchemyRegistry;
+import jp.plusplus.fbs.alchemy.IAlchemyMaterial;
+import jp.plusplus.fbs.item.ItemBookSorcery;
+import jp.plusplus.fbs.item.ItemStoneSpirit;
+import jp.plusplus.fbs.spirit.SpiritManager;
+import net.minecraft.init.Items;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import shift.mceconomy2.api.MCEconomyAPI;
+
+/**
+ * Created by plusplus_F on 2015/11/04.
+ */
+public class SlotContract extends Slot{
+ protected int type;
+
+ public SlotContract(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_, int type) {
+ super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
+ this.type=type;
+ }
+
+ @Override
+ public boolean isItemValid(ItemStack itemStack) {
+ if(type==0){
+ //武器
+ return SpiritManager.isTool(itemStack.getItem());
+ }
+ else if(type==1){
+ //精霊石
+ return itemStack.getItem() instanceof ItemStoneSpirit;
+ }
+ else if(type==2){
+ //書物
+ if(!(itemStack.getItem() instanceof ItemBookSorcery)) return false;
+ Registry.BookData bd=Registry.GetBookDataFromItemStack(itemStack);
+ if(bd==null) return false;
+ return bd.title.equals("fbs.contract");
+ }
+
+ return true;
+ }
+
+
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotCrafting.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotCrafting.class
new file mode 100644
index 0000000..8645c7a
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotCrafting.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotCrafting.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotCrafting.java
new file mode 100644
index 0000000..3e73133
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotCrafting.java
@@ -0,0 +1,81 @@
+package jp.plusplus.fbs.container.slot;
+
+import cpw.mods.fml.common.FMLCommonHandler;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
+
+/**
+ * Createdby pluslus_Fon 2015/06/14.
+ */
+public class SlotCrafting extends Slot {
+ private EntityPlayer thePlayer;
+ private int amountCrafted;
+ private IInventory inventory;
+
+ public SlotCrafting(EntityPlayer player, IInventory p_i1823_3_, int p_i1823_4_, int p_i1823_5_, int p_i1823_6_) {
+ super(p_i1823_3_, p_i1823_4_, p_i1823_5_, p_i1823_6_);
+ this.thePlayer = player;
+ this.inventory=p_i1823_3_;
+ }
+
+ @Override
+ public boolean isItemValid(ItemStack p_75214_1_)
+ {
+ return false;
+ }
+
+ @Override
+ public ItemStack decrStackSize(int p_75209_1_) {
+ if (this.getHasStack()) {
+ this.amountCrafted += Math.min(p_75209_1_, this.getStack().stackSize);
+ }
+ return super.decrStackSize(p_75209_1_);
+ }
+
+ @Override
+ protected void onCrafting(ItemStack p_75210_1_, int p_75210_2_) {
+ this.amountCrafted += p_75210_2_;
+ this.onCrafting(p_75210_1_);
+ }
+
+ @Override
+ protected void onCrafting(ItemStack p_75208_1_) {
+ p_75208_1_.onCrafting(this.thePlayer.worldObj, this.thePlayer, this.amountCrafted);
+ this.amountCrafted = 0;
+ }
+
+ @Override
+ public void onPickupFromSlot(EntityPlayer p_82870_1_, ItemStack p_82870_2_) {
+ FMLCommonHandler.instance().firePlayerCraftingEvent(p_82870_1_, p_82870_2_, inventory);
+ this.onCrafting(p_82870_2_);
+
+ for (int i = 0; i < 9; ++i) {
+ ItemStack itemstack1 = inventory.getStackInSlot(i);
+
+ if (itemstack1 != null) {
+ inventory.decrStackSize(i, 1);
+
+ if (itemstack1.getItem().hasContainerItem(itemstack1)) {
+ ItemStack itemstack2 = itemstack1.getItem().getContainerItem(itemstack1);
+
+ if (itemstack2 != null && itemstack2.isItemStackDamageable() && itemstack2.getItemDamage() > itemstack2.getMaxDamage()) {
+ MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(thePlayer, itemstack2));
+ continue;
+ }
+
+ if (!itemstack1.getItem().doesContainerItemLeaveCraftingGrid(itemstack1) || !this.thePlayer.inventory.addItemStackToInventory(itemstack2)) {
+ if (inventory.getStackInSlot(i) == null) {
+ inventory.setInventorySlotContents(i, itemstack2);
+ } else {
+ this.thePlayer.dropPlayerItemWithRandomChoice(itemstack2, false);
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotCraftingPottery.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotCraftingPottery.class
new file mode 100644
index 0000000..fe12dd8
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotCraftingPottery.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotCraftingPottery.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotCraftingPottery.java
new file mode 100644
index 0000000..2149c66
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotCraftingPottery.java
@@ -0,0 +1,78 @@
+package jp.plusplus.fbs.container.slot;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent;
+
+/**
+ * Createdby pluslus_Fon 2015/08/29.
+ */
+public class SlotCraftingPottery extends Slot {
+ private EntityPlayer thePlayer;
+ private int amountCrafted;
+
+ public SlotCraftingPottery(EntityPlayer player, IInventory p_i1823_3_, int p_i1823_4_, int p_i1823_5_, int p_i1823_6_) {
+ super(p_i1823_3_, p_i1823_4_, p_i1823_5_, p_i1823_6_);
+ this.thePlayer = player;
+ }
+
+ @Override
+ public boolean isItemValid(ItemStack p_75214_1_)
+ {
+ return false;
+ }
+
+ @Override
+ public ItemStack decrStackSize(int p_75209_1_) {
+ if (this.getHasStack()) {
+ this.amountCrafted += Math.min(p_75209_1_, this.getStack().stackSize);
+ }
+ return super.decrStackSize(p_75209_1_);
+ }
+
+ @Override
+ protected void onCrafting(ItemStack p_75210_1_, int p_75210_2_) {
+ this.amountCrafted += p_75210_2_;
+ this.onCrafting(p_75210_1_);
+ }
+
+ @Override
+ protected void onCrafting(ItemStack p_75208_1_) {
+ p_75208_1_.onCrafting(this.thePlayer.worldObj, this.thePlayer, this.amountCrafted);
+ this.amountCrafted = 0;
+ }
+
+ @Override
+ public void onPickupFromSlot(EntityPlayer p_82870_1_, ItemStack p_82870_2_) {
+ //FMLCommonHandler.instance().firePlayerCraftingEvent(p_82870_1_, p_82870_2_, craftMatrix);
+ this.onCrafting(p_82870_2_);
+
+ for (int i = 0; i < 25; ++i) {
+ ItemStack itemstack1 = inventory.getStackInSlot(i);
+
+ if (itemstack1 != null) {
+ inventory.decrStackSize(i, 1);
+
+ if (itemstack1.getItem().hasContainerItem(itemstack1)) {
+ ItemStack itemstack2 = itemstack1.getItem().getContainerItem(itemstack1);
+
+ if (itemstack2 != null && itemstack2.isItemStackDamageable() && itemstack2.getItemDamage() > itemstack2.getMaxDamage()) {
+ MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(thePlayer, itemstack2));
+ continue;
+ }
+
+ if (!itemstack1.getItem().doesContainerItemLeaveCraftingGrid(itemstack1) || !this.thePlayer.inventory.addItemStackToInventory(itemstack2)) {
+ if (inventory.getStackInSlot(i) == null) {
+ inventory.setInventorySlotContents(i, itemstack2);
+ } else {
+ this.thePlayer.dropPlayerItemWithRandomChoice(itemstack2, false);
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotInventory.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotInventory.class
new file mode 100644
index 0000000..d489ee4
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotInventory.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotInventory.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotInventory.java
new file mode 100644
index 0000000..76a7c5a
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotInventory.java
@@ -0,0 +1,49 @@
+package jp.plusplus.fbs.container.slot;
+
+import jp.plusplus.fbs.alchemy.AlchemyRegistry;
+import jp.plusplus.fbs.alchemy.IAlchemyMaterial;
+import jp.plusplus.fbs.alchemy.IAlchemyProduct;
+import jp.plusplus.fbs.item.ItemBookSorcery;
+import jp.plusplus.fbs.item.ItemCore;
+import jp.plusplus.fbs.item.ItemStaff;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.oredict.OreDictionary;
+
+import java.util.ArrayList;
+
+/**
+ * Createdby pluslus_Fon 2015/06/15.
+ */
+public class SlotInventory extends Slot {
+ private int type;//0 book, 1 charm,book, 2 inv, 3 alchemy
+ public SlotInventory(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_, int type) {
+ super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
+ this.type=type;
+ }
+
+
+ public boolean isItemValid(ItemStack p_75214_1_) {
+ if (type == 0) return p_75214_1_.getItem() == ItemCore.bookSorcery;
+ if (type == 1){
+ ArrayList<ItemStack> list=OreDictionary.getOres("fbs.charm");
+ for(ItemStack item : list){
+ if(OreDictionary.itemMatches(item, p_75214_1_, false)) return true;
+ }
+ return false;
+ }
+ if(type==3){
+ Item it=p_75214_1_.getItem();
+ return it instanceof IAlchemyMaterial || it instanceof IAlchemyProduct || AlchemyRegistry.isBasketItem(p_75214_1_);
+ }
+ return true;
+ }
+
+ @Override
+ public boolean canTakeStack(EntityPlayer p_82869_1_) {
+ return !(getHasStack() && getStack().getItem() instanceof ItemStaff);
+ }
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotMagic.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagic.class
new file mode 100644
index 0000000..28c1683
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagic.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotMagic.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagic.java
new file mode 100644
index 0000000..b437a68
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagic.java
@@ -0,0 +1,20 @@
+package jp.plusplus.fbs.container.slot;
+
+import jp.plusplus.fbs.container.inventory.InventoryMagic;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+/**
+ * Created by pluslus_F on 2015/06/18.
+ */
+public class SlotMagic extends Slot {
+ public SlotMagic(InventoryMagic p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) {
+ super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
+ }
+
+ @Override
+ public void onSlotChanged(){
+ super.onSlotChanged();
+ ((InventoryMagic)inventory).onInventoryChanged(getSlotIndex());
+ }
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicCopy.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicCopy.class
new file mode 100644
index 0000000..65d9a01
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicCopy.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicCopy.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicCopy.java
new file mode 100644
index 0000000..f0ed794
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicCopy.java
@@ -0,0 +1,25 @@
+package jp.plusplus.fbs.container.slot;
+
+import jp.plusplus.fbs.FBS;
+import jp.plusplus.fbs.container.inventory.InventoryMagic;
+import jp.plusplus.fbs.mod.ForSS2;
+import net.minecraft.item.ItemStack;
+
+/**
+ * Created by pluslus_F on 2015/06/18.
+ */
+public class SlotMagicCopy extends SlotMagic {
+ public SlotMagicCopy(InventoryMagic p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) {
+ super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
+ }
+
+ @Override
+ public boolean isItemValid(ItemStack p_75214_1_) {
+ return p_75214_1_.getMaxStackSize()>1;
+ }
+ @Override
+ public int getSlotStackLimit()
+ {
+ return 1;
+ }
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTakeOnly.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTakeOnly.class
new file mode 100644
index 0000000..c855f2e
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTakeOnly.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTakeOnly.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTakeOnly.java
new file mode 100644
index 0000000..0316492
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTakeOnly.java
@@ -0,0 +1,20 @@
+package jp.plusplus.fbs.container.slot;
+
+import jp.plusplus.fbs.container.inventory.InventoryMagic;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+/**
+ * Createdby pluslus_Fon 2015/06/18.
+ */
+public class SlotMagicTakeOnly extends SlotMagic{
+ public SlotMagicTakeOnly(InventoryMagic p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) {
+ super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
+ }
+
+ @Override
+ public boolean isItemValid(ItemStack item){
+ return false;
+ }
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTimeTrace.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTimeTrace.class
new file mode 100644
index 0000000..94e315a
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTimeTrace.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTimeTrace.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTimeTrace.java
new file mode 100644
index 0000000..a5ef88b
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotMagicTimeTrace.java
@@ -0,0 +1,28 @@
+package jp.plusplus.fbs.container.slot;
+
+import jp.plusplus.fbs.FBS;
+import jp.plusplus.fbs.container.inventory.InventoryMagic;
+import jp.plusplus.fbs.mod.ForSS2;
+import net.minecraft.item.ItemStack;
+
+/**
+ * Created by pluslus_F on 2015/02/28.
+ */
+public class SlotMagicTimeTrace extends SlotMagic {
+ public SlotMagicTimeTrace(InventoryMagic p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) {
+ super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
+ }
+
+ @Override
+ public boolean isItemValid(ItemStack p_75214_1_) {
+ if(FBS.cooperatesSS2 && ForSS2.canTimeTrace(p_75214_1_)){
+ return true;
+ }
+ return p_75214_1_.getItem().isItemTool(p_75214_1_);
+ }
+ @Override
+ public int getSlotStackLimit()
+ {
+ return 64;
+ }
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotShowOnly.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotShowOnly.class
new file mode 100644
index 0000000..02ee690
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotShowOnly.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotShowOnly.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotShowOnly.java
new file mode 100644
index 0000000..14f6be3
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotShowOnly.java
@@ -0,0 +1,25 @@
+package jp.plusplus.fbs.container.slot;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+/**
+ * Created by plusplus_F on 2015/02/06.
+ */
+public class SlotShowOnly extends Slot {
+ public SlotShowOnly(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) {
+ super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
+ }
+
+ @Override
+ public boolean isItemValid(ItemStack item){
+ return false;
+ }
+
+ @Override
+ public boolean canTakeStack(EntityPlayer p_82869_1_) {
+ return false;
+ }
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnly.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnly.class
new file mode 100644
index 0000000..81c8e61
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnly.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnly.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnly.java
new file mode 100644
index 0000000..4476bb4
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnly.java
@@ -0,0 +1,53 @@
+package jp.plusplus.fbs.container.slot;
+
+import cpw.mods.fml.common.FMLCommonHandler;
+import jp.plusplus.fbs.AchievementRegistry;
+import jp.plusplus.fbs.api.IPottery;
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+
+/**
+ * Createdby pluslus_Fon 2015/06/08.
+ */
+public class SlotTakeOnly extends Slot{
+ protected int achievement;
+
+ public SlotTakeOnly(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_) {
+ this(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_, 0);
+ }
+ public SlotTakeOnly(IInventory p_i1824_1_, int p_i1824_2_, int p_i1824_3_, int p_i1824_4_, int achievement){
+ super(p_i1824_1_, p_i1824_2_, p_i1824_3_, p_i1824_4_);
+ this.achievement=achievement;
+ }
+
+ @Override
+ public boolean isItemValid(ItemStack item){
+ return false;
+ }
+
+ @Override
+ public void onPickupFromSlot(EntityPlayer player, ItemStack stack) {
+ Item item=stack.getItem();
+ if(achievement==1){
+ if(item instanceof ItemBlock){
+ Block b=((ItemBlock) item).field_150939_a;
+ if(b instanceof IPottery){
+ player.triggerAchievement(AchievementRegistry.grade);
+ if(((IPottery) b).getGrade(stack.getTagCompound())== IPottery.PotteryGrade.SOULFUL){
+ player.triggerAchievement(AchievementRegistry.soulful);
+ }
+ }
+ }
+ }
+ else if(achievement==2){
+ FMLCommonHandler.instance().firePlayerCraftingEvent(player, stack, null);
+ }
+
+ super.onPickupFromSlot(player, stack);
+ }
+}
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnlyWithMagicEXP.class b/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnlyWithMagicEXP.class
new file mode 100644
index 0000000..24aae06
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnlyWithMagicEXP.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnlyWithMagicEXP.java b/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnlyWithMagicEXP.java
new file mode 100644
index 0000000..dd6f2a8
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/container/slot/SlotTakeOnlyWithMagicEXP.java
@@ -0,0 +1,65 @@
+package jp.plusplus.fbs.container.slot;
+
+import cpw.mods.fml.common.FMLCommonHandler;
+import jp.plusplus.fbs.AchievementRegistry;
+import jp.plusplus.fbs.alchemy.AlchemyRegistry;
+import jp.plusplus.fbs.api.FBSEntityPropertiesAPI;
+import net.minecraft.entity.item.EntityXPOrb;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Items;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.inventory.SlotFurnace;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.crafting.FurnaceRecipes;
+import net.minecraft.stats.AchievementList;
+import net.minecraft.util.MathHelper;
+
+/**
+ * Created by plusplus_F on 2015/10/31.
+ */
+public class SlotTakeOnlyWithMagicEXP extends Slot {
+ protected EntityPlayer thePlayer;
+ protected int achievement;
+
+ public SlotTakeOnlyWithMagicEXP(EntityPlayer p_i1813_1_, IInventory p_i1813_2_, int p_i1813_3_, int p_i1813_4_, int p_i1813_5_) {
+ this(p_i1813_1_, p_i1813_2_, p_i1813_3_, p_i1813_4_, p_i1813_5_, 0);
+ }
+ public SlotTakeOnlyWithMagicEXP(EntityPlayer p_i1813_1_, IInventory p_i1813_2_, int p_i1813_3_, int p_i1813_4_, int p_i1813_5_, int achievement) {
+ super(p_i1813_2_, p_i1813_3_, p_i1813_4_, p_i1813_5_);
+ this.thePlayer = p_i1813_1_;
+ this.achievement=achievement;
+ }
+
+ public boolean isItemValid(ItemStack p_75214_1_) {
+ return false;
+ }
+
+ public ItemStack decrStackSize(int p_75209_1_) {
+ return super.decrStackSize(p_75209_1_);
+ }
+
+ public void onPickupFromSlot(EntityPlayer p_82870_1_, ItemStack p_82870_2_) {
+ this.onCrafting(p_82870_2_);
+ if(achievement==1){
+ p_82870_1_.triggerAchievement(AchievementRegistry.alchemy);
+ }
+ super.onPickupFromSlot(p_82870_1_, p_82870_2_);
+ }
+
+ protected void onCrafting(ItemStack p_75210_1_, int p_75210_2_) {
+ this.onCrafting(p_75210_1_);
+ }
+
+ protected void onCrafting(ItemStack p_75208_1_) {
+ p_75208_1_.onCrafting(this.thePlayer.worldObj, this.thePlayer, 1);
+
+ if (!this.thePlayer.worldObj.isRemote) {
+ double baseEXP = AlchemyRegistry.GetProductExp(p_75208_1_);
+
+ if(baseEXP>0){
+ FBSEntityPropertiesAPI.AddExp(thePlayer, baseEXP, true);
+ }
+ }
+ }
+}