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 me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib ;
2019-03-31 18:32:40 +00:00
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper ;
2016-04-14 16:24:03 +00:00
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.Lists.SlimefunItems ;
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.CargoNet ;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow ;
public class CargoOutputNode extends SlimefunItem {
private static final int [ ] border = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 } ;
2018-09-04 16:57:19 +00:00
2016-04-14 16:24:03 +00:00
public CargoOutputNode ( Category category , ItemStack item , String name , RecipeType recipeType , ItemStack [ ] recipe , ItemStack recipeOutput ) {
super ( category , item , name , recipeType , recipe , recipeOutput ) ;
2016-11-23 15:51:57 +00:00
new BlockMenuPreset ( name , " &6Output Node " ) {
2016-04-14 16:24:03 +00:00
@Override
public void init ( ) {
constructMenu ( this ) ;
}
@Override
public void newInstance ( final BlockMenu menu , final Block b ) {
try {
2016-11-23 15:51:57 +00:00
menu . replaceExistingItem ( 12 , new CustomItem ( CustomSkull . getItem ( " eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ== " ) , " &bChannel " , " " , " &e> Click to decrease the Channel ID by 1 " ) ) ;
2019-03-31 18:32:40 +00:00
menu . addMenuClickHandler ( 12 , ( p , slot , item , action ) - > {
int channel = Integer . parseInt ( BlockStorage . getLocationInfo ( b . getLocation ( ) , " frequency " ) ) - 1 ;
if ( channel < 0 ) {
if ( CargoNet . EXTRA_CHANNELS ) channel = 16 ;
else channel = 15 ;
2016-04-14 16:24:03 +00:00
}
2019-03-31 18:32:40 +00:00
BlockStorage . addBlockInfo ( b , " frequency " , String . valueOf ( channel ) ) ;
newInstance ( menu , b ) ;
return false ;
2016-04-14 16:24:03 +00:00
} ) ;
2018-06-06 09:41:56 +00:00
int channel = ( ( ! BlockStorage . hasBlockInfo ( b ) | | BlockStorage . getLocationInfo ( b . getLocation ( ) , " frequency " ) = = null ) ? 0 : ( Integer . parseInt ( BlockStorage . getLocationInfo ( b . getLocation ( ) , " frequency " ) ) ) ) ;
2016-04-14 16:24:03 +00:00
if ( channel = = 16 ) {
2016-11-23 15:51:57 +00:00
menu . replaceExistingItem ( 13 , new CustomItem ( SlimefunItems . CHEST_TERMINAL , " &bChannel ID: &3 " + ( channel + 1 ) ) ) ;
2019-03-31 18:32:40 +00:00
menu . addMenuClickHandler ( 13 ,
( p , slot , item , action ) - > false
) ;
2016-04-14 16:24:03 +00:00
}
else {
2018-09-05 16:36:32 +00:00
menu . replaceExistingItem ( 13 , new CustomItem ( new ItemStack ( MaterialHelper . WoolColours [ channel ] ) , " &bChannel ID: &3 " + ( channel + 1 ) ) ) ;
2019-03-31 18:32:40 +00:00
menu . addMenuClickHandler ( 13 ,
( p , slot , item , action ) - > false
) ;
2016-04-14 16:24:03 +00:00
}
2016-11-23 15:51:57 +00:00
menu . replaceExistingItem ( 14 , new CustomItem ( CustomSkull . getItem ( " eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ== " ) , " &bChannel " , " " , " &e> Click to increase the Channel ID by 1 " ) ) ;
2019-03-31 18:32:40 +00:00
menu . addMenuClickHandler ( 14 , ( p , slot , item , action ) - > {
int channeln = Integer . parseInt ( BlockStorage . getLocationInfo ( b . getLocation ( ) , " frequency " ) ) + 1 ;
2016-04-14 16:24:03 +00:00
2019-03-31 18:32:40 +00:00
if ( CargoNet . EXTRA_CHANNELS ) {
if ( channeln > 16 ) channeln = 0 ;
}
else {
if ( channeln > 15 ) channeln = 0 ;
2016-04-14 16:24:03 +00:00
}
2019-03-31 18:32:40 +00:00
2019-04-13 10:47:22 +00:00
BlockStorage . addBlockInfo ( b , " frequency " , String . valueOf ( channeln ) ) ;
2019-03-31 18:32:40 +00:00
newInstance ( menu , b ) ;
return false ;
2016-04-14 16:24:03 +00:00
} ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
}
@Override
public boolean canOpen ( Block b , Player p ) {
2016-10-30 10:02:16 +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 ) {
return true ;
}
} ) ;
}
protected void constructMenu ( BlockMenuPreset preset ) {
2019-03-31 18:32:40 +00:00
for ( int i : border ) {
2018-09-05 16:36:32 +00:00
preset . addItem ( i , new CustomItem ( new ItemStack ( Material . CYAN_STAINED_GLASS_PANE ) , " " ) ,
2019-03-31 18:32:40 +00:00
( p , slot , item , action ) - > false
) ;
2016-04-14 16:24:03 +00:00
}
}
2019-03-31 18:32:40 +00:00
2016-04-14 16:24:03 +00:00
}