
Do you no longer want to redirect people to the internet to answer your surveys? Do you want to get players' feedback in-game?
Survey plus is the in-game Minecraft survey solution!
Improve your server today by collecting useful feedback from your players!

- 3 Different survey types (Inventory GUI, Chat Survey and Book survey)
- Easy in-game editor. Configure everything using the in-game GUI menu for maximum convenience.
- View survey results in-game.
- Custom rewards for players that finish a survey. (Custom for every survey!)
- NEW SQLite storage for single servers.
- MySql storage for networks
- Configure the surveys to make them unique for your server.
- Target specific servers or server groups in your network.
- NEW Only target a certain group of players using permissions.
- NEW Cooldown on featured survey display (across servers)
- Fast & without any lag. Programmed for minimal server impact.
- NEW Export survey results to JSON.
- Open questions
- Closed questions (yes / no)
- Select question (select one of the options)
- Multiple questions (select 0 or more options)

Example of a BOOK survey

Example of a GUI survey
(Layout and colors can be changed!)
Example CHAT survey
(Layout and colors can be changed!)
A passive way to serve surveys to players:
(Layout and colors can be changed!)
Or have them pop-up when someone joins the server:

- Download the surveyplus.jar
- Drop the jar in your plugin folder and start the server.
- Stop the server and configure the config.yml (MySql, SQLite)
- Start your server again.
- Use /sp menu to open the survey editor.
- Create your first survey.
- Activate the survey and collect feedback!
- Enjoy

There is only 1 config that contains all the data. An example config can look like this: (this is the default config)
YAML:
# ___ _ _ ___ _
# / __| _ _ _ _ __ __ ___ | || | | _ \ | | _ _ ___
# \__ \ | +| | | '_| \ V / / -_) \_, | | _/ | | | +| | (_-<
# |___/ \_,_| _|_|_ _\_/_ \___| _|__/ _|_|_ _|_|_ \_,_| /__/_
#_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_| """"| {======|_| """ |_|"""""|_|"""""|_|"""""|
#"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'./o--000'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'
#
# A survey solution for networks and single servers by MartenM
#
#"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'./o--000'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'
#
# The server name specified here in the config is used to target the featured survey option.
# Server names don't have to be unique. This means that all servers in 1 group can carry the same name.
server_name: GLOBAL
# Database settings
# Specify the used database here.
# Possible options: "SQLite, mysql"
database_option: "SQLite"
mysql:
user: root
password: ''
port: 3306
host: localhost
database: mc
SQLite:
file_name: surveyData
# Used to define the default language file for easy use.
# Default is English.
language: "English"
# Featured settings
featured:
# Timeout between the event and the presentation of the featured survey.
# (in minecraft ticks: 20 ticks = 1 second)
timeout: 20
# Show a featured survey on server join.
on_join: true
# Interfaces for different survey types.
interface:
# Universal sound settings
sounds:
# Configure sound settings, values like "none" "" will be ignored.
feature_popup: "ENTITY_CAT_AMBIENT 1 1.5"
next_question: "BLOCK_NOTE_BLOCK_XYLOPHONE 0.8 1"
toggle_answer: "BLOCK_STONE_BUTTON_CLICK_ON 0.7 3"
click: "BLOCK_STONE_BUTTON_CLICK_ON 1 3"
finish_survey: "ENTITY_PLAYER_LEVELUP 0.3 0.5"
error: "BLOCK_NOTE_BASS 1 0.5"
######################################################################
# #
# Chat interface settings #
# #
######################################################################
chat:
# General settings for this survey interface
settings:
chat_clear_rows: 20
spacing: " "
# General UI settings
general:
hover_answer: "&eClick to answer&e: %option%"
header:
- " &e&l%question%"
- " "
footer:
- " "
#
# Start of per question specifications
#
open:
hint_message: "&e Please type your answer in the chat!"
closed:
yes_option: "&7> &a&lYES"
no_option: "&7> &c&lNO"
select:
format: "&7> &0 %option%"
# Footers can be overridden for each question type!
# The same holds for headers.
footer:
- "&7 Click an answer to proceed"
multiple:
format_selected: "&a&l✓&r &e %option%"
format_unselected: "&7● &e %option%"
# Footers can be overridden for each question type!
# The same holds for headers.
hover_selected: "&eClick to &cdeselect&e: %option%"
hover_unselected: "&eClick to &aselect&e: %option%"
hover_next: "&eClick to move to the next question"
next_question:
- " "
- " > &a&lNext question&r <"
finish_screen:
text:
- "&aThanks for filling in this survey"
- "&aUsing your feedback we will make sure to improve our server in the future"
- " "
- "&7You have been given some rewards for finishing the survey"
featured_screen:
text:
- " &6&lWe are hosting a survey!"
- " "
- " &l%name%"
- " &7%description%"
- " "
- "<START>"
- " "
start_text: " &a&lStart survey"
start_hover: "&7Click to &astart &7the survey"
######################################################################
# #
# Book interface settings #
# #
######################################################################
book:
general:
# Adds a little space before answer entry.
answer_spacing: " "
hover_answer: "&eClick to answer&e: %option%"
header:
- "&lQuestion:"
- "%question%"
- " "
- " "
open:
hover_text: "&aClose the book"
content:
- "&lClose the book and type your answer in chat."
chat_content:
- " "
- "&7&e Type your answer in chat!"
- " "
closed:
yes_option: "&7> &2&lYES"
no_option: "&7> &4&lNO"
select:
format: "&7>&0 %option%"
multiple:
format_selected: "&2&l✓&r&0 %option%"
format_unselected: "&7● &0%option%"
hover_selected: "&7Click to &cdeselect&7: %option%"
hover_unselected: "&7Click to &aselect&7: %option%"
hover_next: "&7Click to move to the next question"
next_question:
- " "
- " > &1&lNext question&r <"
finish_screen:
text:
- "&2&lThanks for filling in this survey"
- " "
- "&0Using your feedback we will make sure to improve our server in the future"
- " "
- "&0You have been given some rewards for finishing the survey."
featured_screen:
text:
- "&1&lWe are hosting a survey!"
- " "
- " &l%name%"
- " %description%"
- " "
- " <START>"
- " "
start_text: "&2&lStart survey"
start_hover: "&7Click to &astart &7the survey"
# Use <CLOSE> to create a close button.
close_text: "&c&lClose"
close_hover: "&7Click to close this pop-up"
######################################################################
# #
# Inventory interface settings #
# #
######################################################################
inventory:
general:
size: 45
# Header items that display the question
# Placeholders: %username% %question%
extra_items:
q1:
material: ITEM_FRAME
slot: 12
name: "&7Question:"
lore:
- "%question%"
q2:
material: ITEM_FRAME
slot: 13
name: "&7Question:"
lore:
- "%question%"
q3:
material: ITEM_FRAME
slot: 14
name: "&7Question:"
lore:
- "%question%"
# Distribution of answer items
distribution:
- 31
- 30 32
- 30 31 32
- 29 30 32 33
- 29 30 31 32 33
- 28 29 30 32 33 34
# Settings per question type
open:
material: WRITTEN_BOOK
name: "Open the chat and type your answer"
lore:
- " "
- "&7There is also an message in chat to help you answer :)"
closed:
yes_option:
material: LIME_CONCRETE
name: "&a&lYes"
lore:
- " "
- "&7Click to answer &ayes"
no_option:
material: RED_CONCRETE
name: "&c&lNo"
lore:
- " "
- "&7Click to answer &cno"
multiple:
selected:
material: YELLOW_CONCRETE
name: "&e%option%"
lore:
- " "
- "&7Click to &ede-select&7 %option%"
un_selected:
material: LIGHT_GRAY_CONCRETE
name: "&f%option%"
lore:
- " "
- "&7Click to &aselect&7 %option%"
next_question:
slot: 44
material: ARROW
name: "&aNext question"
lore:
- " "
- "&7Click to move to the next question"
select:
material: ORANGE_CONCRETE
name: "&f%option%"
lore:
- " "
- "&7Click to answer"
finished_screen:
general:
size: 36
name: "&lThanks for participating"
items:
thanks1:
slot: 21
material: "GOLD_INGOT"
name: "&6&lThanks for your help!"
lore:
- " "
- "&7With your feedback we can improve the server!"
- "&7You have been &6rewarded&7 for your participation."
thanks2:
slot: 22
material: "GOLD_BLOCK"
name: "&6&lThanks for your help!"
lore:
- " "
- "&7With your feedback we can improve the server!"
- "&7You have been &6rewarded&7 for your participation."
thanks3:
slot: 23
material: "GOLD_INGOT"
name: "&6&lThanks for your help!"
lore:
- " "
- "&7With your feedback we can improve the server!"
- "&7You have been &6rewarded&7 for your participation."
featured_screen:
general:
size: 36
name: "&lPlayer feedback: %survey_name%"
start_items:
start1:
slot: 30
material: "LIME_CONCRETE"
name: "&a&lStart survey"
lore:
- " "
- "&7Click here to start the survey"
start2:
slot: 31
material: "LIME_CONCRETE"
name: "&a&lStart survey"
lore:
- " "
- "&7Click here to start the survey"
start3:
slot: 32
material: "LIME_CONCRETE"
name: "&a&lStart survey"
lore:
- " "
- "&7Click here to start the survey"
extra_items:
extra1:
slot: 13
material: "DIAMOND"
name: "&l&bGive feedback & get epic rewards"
lore:
- " "
- "%survey_description%"
- " "
- "&7Answer the questions in the survey"
- "&7and receive &bepic &6rewards&7."
######################################################################
# #
# Available survey interface settings #
# #
######################################################################
available_surveys:
# General settings like size and inventory name
general:
inventory_name: "&lAvailable surveys"
inventory_size: 45
# Settings about the items used to display available surveys.
survey_item:
material: "WRITABLE_BOOK"
name: "&6&l%survey_name%&r"
lore:
- " "
- "%survey_description%"
- " "
- "&7Click to start the survey"
# If no surveys are available this item will be shown instead.
none_available:
slot: 31
material: "BARRIER"
name: "&cNo survey available"
lore:
- " "
- "&7No new surveys are available!"
- "&7Please check back later."
# Distribution of surveys across the inventory.
distribution:
- 31
- 30 32
- 29 31 33
- 29 30 32 33
- 29 30 31 32 33
# Add any extra items here. These will be overwritten by the survey
# items if they are in the same slot.
extra_items:
hint_item:
slot: 13
material: "GOLDEN_APPLE"
name: "&a&lHelp us improve the server"
lore:
- " "
- "By answering surveys you"
- "give us useful feedback."
- " "
- "With that feedback we can"
- "make improvements to the server!"
- " "
- "&7Finishing a survey will give you rewards"
fancy_1:
slot: 12
material: "GOLD_NUGGET"
name: "&a&l>"
fancy_2:
slot: 14
material: "GOLD_NUGGET"
name: "&a&l<"
######################################################################
# #
# Survey reminders #
# #
######################################################################
survey_reminders:
# If this setting is set to false no reminders will be send
# even if in the database this setting is set to true.
enabled: true
# Rest of the settings for reminders is in the database.
messages:
- " "
- " &6&lYou have an ongoing survey left open!"
- " &eClick here to continue."
- " "
hover_text: "&7Click to &acontinue &7with the survey."

- /survey /surveys - Opens the available survey menu
- /answer - Give an answer to the currently asked question. (Mostly used to give support for the book and chat surveys. You will NOT be typing this command manually.)
- /sp - Shows the survey plus help
- /sp menu - Opens the survey list menu for editing.
- /sp start <id> (playername) - Start the survey. The optional parameter is the target player's name.

Code:
// Root
surveyplus.open.menu - Open the editor
surveyplus.open.available - Open the survey start screen
// Editor
surveyplus.edit.survey.create
surveyplus.edit.survey.name
surveyplus.edit.survey.description
surveyplus.edit.survey.rewards
surveyplus.edit.survey.type
surveyplus.edit.survey.questions
surveyplus.edit.survey.featured
surveyplus.edit.survey.available
surveyplus.edit.survey.servertarget
surveyplus.edit.survey.start
surveyplus.edit.survey.permission
// danger zone
surveyplus.edit.survey.reset
surveyplus.edit.survey.delete
// Commands
surveyplus.cmd.settings
surveyplus.cmd.survey.start.other
// base node for starting a survey with permission enabled.
surveyplus.survey.start.<ID>
// Access to certain views
view.survey.advanced
view.survey.results;
Survey-specific permissions may be a feature addition if people are needing this.

In order to use the API you first need to install the surveyplus-api.jar into your local maven repository.
After that, you can use the SurveyPlusAPI class.
You can get an instance of this class using the services manager in Bukkit.
Java:
public class DependentPlugin extends JavaPlugin {
@Override
public void onEnable() {
SurveyPlusAPI myAPI = Bukkit.getServicesManager().load(SurveyPlusAPI.class);
}
}
SurveyPlusAPI JavaDoc: https://martenm.nl/jdoc/surveyplus/nl/martenm/surveyplus/api/SurveyPlusAPI.html
Full JavaDoc: https://martenm.nl/jdoc/surveyplus/

These are items I have planned for future updates:
- Allow people to answer a survey multiple times.
- Schedule surveys
- More options for when a user should be able to answer a survey.
- Export survey results to a flatfile.Done!
- Reminder when someone leaves his survey. Done!
- Add a stable developer API. Done!
- Add survey settings table for global changes. Done!
- More features.