Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.grimcraft.modules.itemshop;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileReader;
- import java.io.PrintWriter;
- import java.lang.reflect.Constructor;
- import java.util.ArrayList;
- import org.bukkit.ChatColor;
- import org.bukkit.entity.Player;
- import org.grimcraft.ResourceLoader;
- import org.grimcraft.actor.Actor;
- import org.grimcraft.event.EventTrigger;
- import org.grimcraft.event.player.PlayerCommandEvent;
- import org.grimcraft.event.player.PlayerEventListener;
- import org.grimcraft.event.player.PlayerRightClickEvent;
- import org.grimcraft.item.Item;
- import org.grimcraft.module.Module;
- import com.nijiko.coelho.iConomy.iConomy;
- import com.nijiko.coelho.iConomy.system.Account;
- public class ItemShopModule extends Module implements PlayerEventListener {
- private ArrayList< ItemEntry > entries = new ArrayList< ItemEntry >();
- public ItemShopModule() {
- setName( "Item Shop Module" );
- setDescription( "Adds an item shop module to grimcraft." );
- }
- @Override
- public void onEnable() {
- if ( !getDataFolder().exists() )
- getDataFolder().mkdir();
- try {
- File saveFile = new File( getDataFolder(), "ItemShop.txt" );
- if ( !saveFile.exists() )
- return;
- FileReader freader = new FileReader( saveFile );
- BufferedReader reader = new BufferedReader( freader );
- String line = null;
- while ( ( line = reader.readLine() ) != null ) {
- String[] pieces = line.split( "\u001E" );
- String path = pieces[ 0 ];
- Double cost = Double.parseDouble( pieces[ 1 ] );
- String name = pieces[ 2 ];
- String desc = pieces[ 3 ];
- ItemEntry entry = new ItemEntry( path, name, desc, cost );
- entries.add( entry );
- }
- } catch ( Exception e ) {
- e.printStackTrace();
- }
- }
- @Override
- public void onDisable() {
- try {
- File saveFile = new File( getDataFolder(), "ItemShop.txt" );
- if ( !saveFile.exists() || saveFile.delete() )
- saveFile.createNewFile();
- PrintWriter writer = new PrintWriter( saveFile );
- for ( ItemEntry entry : entries ) {
- StringBuffer buffer = new StringBuffer();
- buffer.append( entry.getItemClass() );
- buffer.append( "\u001E" + entry.getCost() );
- buffer.append( "\u001E" + entry.getAlias() );
- buffer.append( "\u001E" + entry.getDesc() );
- writer.println( buffer.toString() );
- }
- writer.flush();
- writer.close();
- } catch ( Exception e ) {
- e.printStackTrace();
- }
- }
- @Override
- public EventTrigger[] getTriggeredEvents() {
- return new EventTrigger[] { EventTrigger.PLAYER_COMMAND };
- }
- @Override
- public void onPlayerCommand( PlayerCommandEvent event, String[] args ) {
- if ( event.getCommand().equalsIgnoreCase( "/itemshop" ) ) {
- Player player = event.getPlayer();
- event.setParsed();
- if ( args.length == 0 ) {
- } else if ( args[ 0 ].equalsIgnoreCase( "list" ) ) {
- player.sendMessage( ChatColor.GOLD + "--- Item Shop" );
- for ( ItemEntry entry : entries ) {
- player.sendMessage( entry.toString() );
- }
- } else if ( args[ 0 ].equalsIgnoreCase( "buy" ) ) {
- if ( args.length == 1 ) {
- player.sendMessage( "SYNTAX: " + ChatColor.GOLD + "/itemshop buy ( item name )" + ChatColor.WHITE + " - No parenthesis" );
- return;
- }
- StringBuffer buffer = new StringBuffer();
- for ( int i = 1; i < args.length; i++ ) {
- if ( i != 1 )
- buffer.append( " " );
- buffer.append( args[ i ] );
- }
- ItemEntry entry = null;
- for ( ItemEntry existing : entries ) {
- if ( existing.getAlias().equalsIgnoreCase( buffer.toString() ) ) {
- entry = existing;
- break;
- }
- }
- if ( entry == null ) {
- player.sendMessage( "That item is not for sale." );
- return;
- }
- Account account = iConomy.getBank().getAccount( player.getName() );
- if ( account == null ) {
- player.sendMessage( "You do not have an iConomy account to buy the item with." );
- return;
- }
- if ( !account.hasEnough( entry.getCost() ) ) {
- player.sendMessage( "You do not have enough to afford " + ChatColor.GOLD + entry.getAlias() );
- return;
- }
- try {
- Class< ? > clazz = ResourceLoader.getLoader().getClass( entry.getItemClass() );
- if ( clazz == null || !Item.class.isAssignableFrom( clazz ) )
- throw new Exception( "ItemShop: Class for '" + entry.getAlias() + "' is null or is not a subclass of Item" );
- Constructor< ? extends Item > cons = clazz.asSubclass( Item.class ).getConstructor();
- if ( cons == null )
- throw new Exception( "Could not obtain the empty constructor for '" + entry.getAlias() + "'" );
- Item item = cons.newInstance();
- if ( item == null )
- throw new Exception( "Could not create an instance of the class for '" + entry.getAlias() + "'" );
- Actor.getActor( event.getPlayer() ).getInventory().addItem( item );
- account.subtract( entry.getCost() );
- player.sendMessage( "You have bought " + ChatColor.GOLD + entry.getAlias() + ChatColor.WHITE + " for " + ChatColor.GREEN + "$" + entry.getCost() );
- } catch ( Exception e ) {
- e.printStackTrace();
- player.sendMessage( "There was an exception when purchasing the item, no funds have been deducted." );
- return;
- }
- }
- } else if ( event.getCommand().equalsIgnoreCase( "/ais" ) ) {
- Player player = event.getPlayer();
- if ( !player.isOp() )
- return;
- else
- event.setParsed();
- if ( args.length == 0 ) {
- } else if ( args[ 0 ].equalsIgnoreCase( "add" ) ) {
- // /ais add {path} {cost} {alias}
- if ( args.length != 5 ) {
- player.sendMessage( "SYNTAX: " + ChatColor.GOLD + "/ais add path cost display_name_here item_desc_here" );
- return;
- }
- Class< ? > clazz = ResourceLoader.getLoader().getClass( args[ 1 ] );
- if ( clazz == null ) {
- player.sendMessage( "The path for the item's class is incorrect." );
- return;
- }
- Double cost = null;
- try {
- cost = Double.parseDouble( args[ 2 ] );
- } catch ( NumberFormatException nfe ) {
- player.sendMessage( "The item's cost is malformed." );
- return;
- }
- if ( cost == null ) {
- player.sendMessage( "The item's cost is malformed." );
- return;
- }
- String alias = args[ 3 ].replaceAll( "_" , " " );
- if ( entries.contains( alias ) ) {
- player.sendMessage( "An entry with that name already exists." );
- return;
- }
- ItemEntry entry = new ItemEntry( args[ 1 ], alias, args[ 4 ].replaceAll( "_" , " " ), cost );
- entries.add( entry );
- player.sendMessage( "The item has been added." );
- } else if ( args[ 0 ].equalsIgnoreCase( "remove" ) ) {
- if ( args.length != 2 ) {
- player.sendMessage( "SYNTAX: " + ChatColor.GOLD + "/ais remove item_name_here" );
- return;
- }
- int index = entries.indexOf( args[ 1 ].replaceAll( "_", " " ) );
- if ( index == -1 ) {
- player.sendMessage( "The item has not been found." );
- return;
- }
- entries.remove( index );
- player.sendMessage( "The item has been removed." );
- }
- }
- }
- @Override
- public void onPlayerRightClick(PlayerRightClickEvent event) {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement