2016-04-14 16:24:03 +00:00
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines ;
2016-10-30 10:13:20 +00:00
import org.bukkit.Material ;
import org.bukkit.block.Block ;
import org.bukkit.entity.Player ;
import org.bukkit.inventory.ItemStack ;
import org.bukkit.material.MaterialData ;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib ;
2016-04-14 16:24:03 +00:00
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler ;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction ;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem ;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull ;
import me.mrCookieSlime.Slimefun.Lists.RecipeType ;
import me.mrCookieSlime.Slimefun.Objects.Category ;
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler ;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem ;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason ;
import me.mrCookieSlime.Slimefun.Setup.Messages ;
import me.mrCookieSlime.Slimefun.api.BlockStorage ;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu ;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset ;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow ;
public class CargoCraftingNode extends SlimefunItem {
private static final int [ ] border = { 0 , 1 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 22 , 23 , 24 , 25 , 26 , 27 , 31 , 32 , 33 , 34 , 35 , 36 , 40 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 } ;
public CargoCraftingNode ( Category category , ItemStack item , String name , RecipeType recipeType , ItemStack [ ] recipe ) {
super ( category , item , name , recipeType , recipe ) ;
2016-10-30 10:01:01 +00:00
new BlockMenuPreset ( name , " §3Input Node " ) {
2016-04-14 16:24:03 +00:00
@Override
public void init ( ) {
constructMenu ( this ) ;
}
@SuppressWarnings ( " deprecation " )
@Override
public void newInstance ( final BlockMenu menu , final Block b ) {
try {
2016-10-30 10:01:01 +00:00
menu . replaceExistingItem ( 41 , new CustomItem ( CustomSkull . getItem ( " eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ== " ) , " §bChannel " , " " , " §e> Click to decrease the Channel ID by 1 " ) ) ;
2016-04-14 16:24:03 +00:00
menu . addMenuClickHandler ( 41 , new MenuClickHandler ( ) {
@Override
public boolean onClick ( Player p , int arg1 , ItemStack arg2 , ClickAction arg3 ) {
int channel = Integer . parseInt ( BlockStorage . getBlockInfo ( b , " frequency " ) ) - 1 ;
if ( channel < 0 ) channel = 15 ;
BlockStorage . addBlockInfo ( b , " frequency " , String . valueOf ( channel ) ) ;
newInstance ( menu , b ) ;
return false ;
}
} ) ;
2016-10-30 10:01:01 +00:00
menu . replaceExistingItem ( 42 , new CustomItem ( new MaterialData ( Material . WOOL , ( byte ) ( ( ! BlockStorage . hasBlockInfo ( b ) | | BlockStorage . getBlockInfo ( b , " frequency " ) = = null ) ? 0 : ( Integer . parseInt ( BlockStorage . getBlockInfo ( b , " frequency " ) ) ) ) ) , " §bChannel ID: §3 " + ( ( ( ! BlockStorage . hasBlockInfo ( b ) | | BlockStorage . getBlockInfo ( b , " frequency " ) = = null ) ? 0 : ( Integer . parseInt ( BlockStorage . getBlockInfo ( b , " frequency " ) ) ) ) + 1 ) ) ) ;
2016-04-14 16:24:03 +00:00
menu . addMenuClickHandler ( 42 , new MenuClickHandler ( ) {
@Override
public boolean onClick ( Player p , int arg1 , ItemStack arg2 , ClickAction arg3 ) {
return false ;
}
} ) ;
2016-10-30 10:01:01 +00:00
menu . replaceExistingItem ( 43 , new CustomItem ( CustomSkull . getItem ( " eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ== " ) , " §bChannel " , " " , " §e> Click to increase the Channel ID by 1 " ) ) ;
2016-04-14 16:24:03 +00:00
menu . addMenuClickHandler ( 43 , new MenuClickHandler ( ) {
@Override
public boolean onClick ( Player p , int arg1 , ItemStack arg2 , ClickAction arg3 ) {
int channel = Integer . parseInt ( BlockStorage . getBlockInfo ( b , " frequency " ) ) + 1 ;
if ( channel > 15 ) channel = 0 ;
BlockStorage . addBlockInfo ( b , " frequency " , String . valueOf ( channel ) ) ;
newInstance ( menu , b ) ;
return false ;
}
} ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
}
@Override
public boolean canOpen ( Block b , Player p ) {
2016-10-30 10:01:01 +00:00
boolean open = CSCoreLib . getLib ( ) . getProtectionManager ( ) . canAccessChest ( p . getUniqueId ( ) , b ) | | p . hasPermission ( " slimefun.cargo.bypass " ) ;
2016-04-14 16:24:03 +00:00
if ( ! open ) {
Messages . local . sendTranslation ( p , " inventory.no-access " , true ) ;
}
return open ;
}
@Override
public int [ ] getSlotsAccessedByItemTransport ( ItemTransportFlow flow ) {
return new int [ 0 ] ;
}
} ;
registerBlockHandler ( name , new SlimefunBlockHandler ( ) {
@Override
public void onPlace ( Player p , Block b , SlimefunItem item ) {
BlockStorage . addBlockInfo ( b , " owner " , p . getUniqueId ( ) . toString ( ) ) ;
BlockStorage . addBlockInfo ( b , " frequency " , " 0 " ) ;
}
@Override
public boolean onBreak ( Player p , Block b , SlimefunItem item , UnregisterReason reason ) {
for ( int slot : getInputSlots ( ) ) {
if ( BlockStorage . getInventory ( b ) . getItemInSlot ( slot ) ! = null ) b . getWorld ( ) . dropItemNaturally ( b . getLocation ( ) , BlockStorage . getInventory ( b ) . getItemInSlot ( slot ) ) ;
}
return true ;
}
} ) ;
}
@SuppressWarnings ( " deprecation " )
protected void constructMenu ( BlockMenuPreset preset ) {
for ( int i : border ) {
preset . addItem ( i , new CustomItem ( new MaterialData ( Material . STAINED_GLASS_PANE , ( byte ) 9 ) , " " ) ,
new MenuClickHandler ( ) {
@Override
public boolean onClick ( Player arg0 , int arg1 , ItemStack arg2 , ClickAction arg3 ) {
return false ;
}
} ) ;
}
2016-10-30 10:01:01 +00:00
preset . addItem ( 2 , new CustomItem ( new MaterialData ( Material . WORKBENCH ) , " §eRecipe " , " " , " §bPut in the Recipe you want to craft " ) ,
2016-04-14 16:24:03 +00:00
new MenuClickHandler ( ) {
@Override
public boolean onClick ( Player arg0 , int arg1 , ItemStack arg2 , ClickAction arg3 ) {
return false ;
}
} ) ;
}
public int [ ] getInputSlots ( ) {
return new int [ ] { 19 , 20 , 21 , 28 , 29 , 30 , 37 , 38 , 39 } ;
}
}