```mermaid classDiagram class Room { -description: String -exits: HashMap<String, Room> -getExitString() String +setExit(String direction, Room neighbor) void +getShortDescription() String +getLongDescription() String +getExit(String direction) String } class Parser { -commands: CommandWords -reader: Scanner +getCommand() command +showCommands() void } class CommandWords { -validCommand: HashMap<String, CommandWord> +getCommandWord(String) CommandWord +isCommand(String) boolean +showAll() void } class CommandWord { GO QUIT HELP UNKNOWN -commandString: String +toString() String } class Game { -parser: Parser -currentRoom: Room -createRooms() void -printWelcome() void -processCommand(Command) boolean -printHelp() void -goRoom(Command) void -quit(Command) boolean +play() void +getCommand() Command +showCommands() void +pickUp() void +searchRoom() void } class Command { -commandWord: CommandWord -secondWord: String +getCommandWord() CommandWord +getSecondWord() String +isUnknown() boolean +hasSecondWord() boolean } class Item { -name: String -weight: double -id: int +getName() String } class Material { -weight: double } class EnergyType{ <<enumeration>> NONE WIND WATER SUN } class Product { -energyType: String -weight: double } class Inventory { -items: ArrayList<Item> -weightLimit: double } class CraftingTable { -materialRecipe: int[] -productId: int } class ProductPlace { -efficiency: double -desiredEnergyId: int -flavorText: String +getFlavorText() String +getEfficiency(): double } class Procent { - } Room --> ProductPlace Game --> Room Game --> Parser Game --> Inventory Inventory --> Item Parser --> Command Parser --> CommandWords CommandWords --> CommandWord <<enumeration>> CommandWord Item <|-- Product Item <|-- Material Room <|-- CraftingTable