![[img] tag](https://images.polymart.org/proxy/?url=https%3A%2F%2Fi.imgur.com%2FqAE3MKl.png&v=2)
InteractiveBoard is an unique and innovative solution for true contextual graphical user interfaces in Minecraft. Anything from touchscreen shops to teaching players your server mechanics with videos is possible. The limit is your imagination.
![[img] tag](https://images.polymart.org/proxy/?url=https%3A%2F%2Fi.imgur.com%2F7SE1PjR.png&v=2)
![[img] tag](https://images.polymart.org/proxy/?url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2FlRvnS4HKJmE2YEFXYF%2Fgiphy.gif&v=2)
![[img] tag](https://images.polymart.org/proxy/?url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2FdyAMeduZ026uVAtXgQ%2Fgiphy.gif&v=2)
![[img] tag](https://images.polymart.org/proxy/?url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2FY15SXj1JG3LBuIX7ZM%2Fgiphy.gif&v=2)
![[img] tag](https://images.polymart.org/proxy/?url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2FdyXUtPFeh7XxmvqzsW%2Fgiphy.gif&v=2)
![[img] tag](https://images.polymart.org/proxy/?url=https%3A%2F%2Fi.imgur.com%2FctghScN.png&v=2)
InteractiveBoard has an always expanding list of features.
- Contextual rendering - every player sees a different image specifically made for them at that moment.
- Scenes - you can have multiple scenes in a single board, so a single board can have a large assortment of uses.
- Buttons - clickable buttons with sub-pixel precision that can execute a variety of functions like opening a crafting table, switching a scene, changing properties of an object like text color or size, scrolling, buying and selling items, etc.
- Permissions - you can set the default board scene to be different depending upon what permissions the player has. For example, you can make it, so a VIP player can see a list of their perks on the board which a normal player wouldn't see.
- Images - you can upload any image you want to the board. Supported formats: .jpg and .png
- Animated GIFS - the plugin has an ability to display animated GIFS on any board you want. This can be used to teach players new mechanics which could only be shown easily with a video playing.
- Fast and optimized rendering - all aspects of the plugin have been tweaked to ensure optimal performance. Using custom smart caching and packet systems, InteractiveBoard is extremely fast and very light, only updating boards when necessary.
- PlaceholderAPI support - you can use all the placeholders from the PlaceholderAPI in text on your board.
- Shops - Vault API is supported, so you can create shops with the board.
- Scrollpanes - you can use scrollpanes to let the player scroll in case all the things you want to show don't fit in your scene.
- Translatable - messages send to the player can be changed in the language configuration file.
- Music Support - InteractiveBoard has NoteBlockAPI support which allows you to play any .nbs song you want in a board.
- 3D Player Skin rendering - you can render the skin of the player on the board.
![[img] tag](https://images.polymart.org/proxy/?url=https%3A%2F%2Fi.imgur.com%2FzKMJrdI.png&v=2)
/ib create - to create a board
/ib delete - to delete a board
/ib reload - to reload all board configurations
/ib teleport <board name> - teleport to a board
/ib fonts - get names of fonts loaded from the font folder
/ib name - get name of a board
/ib reset - reload a specific board
/ib coordinates - get x and y coordinates of a board pixel
Permissions
To create and delete boards you need the permission interactiveboard.admin this permission should only by server owners and admins who configure the plugin.
Tutorial
This is a basic tutorial on the main features of the plugin. More detailed documentation and video tutorials are coming soon. An advanced API for developers to use is available.
If you need any help with the plugin configurations you can message me on polymart, or join InteractiveBoard Support server with this link https://discord.gg/wg46sCMsyv
Note: all objects have default values for everything that isn't important, so you shouldn't set the values that you don't need changed from the defaults.
Objects
Text
## object name, you can set this to anything that is unique
text1:
## object type, in this case text
type: text
## x position relative to root of parent
x: 200
## y position relative to root of parent
y: 169
## the text
text: Welcome to the server %player_name%
## font of text
font: Impact
## size of text
fontsize: 45
## if text is bold
bold: false
## color of text
color: 255 170 60
## these objects are going to be drawn with the position of this object as root
children:
Background
## object name, you can set this to anything that is unique
background1:
## object type, in this case background
type: background
## color of background
color: 255 170 60
## these objects are going to be drawn with the position of this object as root
children:
Button
## object name, you can set this to anything that is unique
button1:
## object type, in this case button
type: button
## color of button
color: 255 170 60
## x position relative to root of parent
x: 200
## y position relative to root of parent
y: 169
## width of button
width: 200
## height of button
height: 200
## is invisible
invisible: false
## functions that the button executes, the functions are listed further down in the tutorial
functions:
## these objects are going to be drawn with the position of this object as root
children:
Image
## object name, you can set this to anything that is unique
image1:
## object type, in this case image
type: image
## x position relative to root of parent
x: 200
## y position relative to root of parent
y: 169
## width of image
width: 200
## height of image
height: 200
## image
image: image.png
## these objects are going to be drawn with the position of this object as root
children:
GIF
## object name, you can set this to anything that is unique
gif1:
## object type, in this case gif
type: gif
## should gif be only played once and pause
playonce: false
## should the gif run fast at 20 fps
fast: false
## x position relative to root of parent
x: 200
## y position relative to root of parent
y: 169
## width of gif
width: 200
## height of gif
height: 200
## gif
gif: image.gif
## these objects are going to be drawn with the position of this object as root
children:
Delayed
## object name, you can set this to anything that is unique
delayedtimer1:
## object type
type: delayedfunctiontimer
## delay time (in milliseconds, 1 second = 1000 milliseconds)
time: 200
## functions
functions:
## some function you want to use
function1:
type: ## some function replace this
function2:
type: ## some function replace this
Repeat
## object name, you can set this to anything that is unique
repeattimer1:
## object type
type: repeatfunctiontimer
## repeat time (in milliseconds, 1 second = 1000 milliseconds)
time: 200
## functions
functions:
## some function you want to use
function1:
type: ## some function replace this
function2:
type: ## some function replace this
Music
## object name, you can set this to anything that is unique
musicplayer1:
## object type
## Note: You need to have NoteBlockAPI installed for music player to work!
type: musicplayer
## music file to play
music: somemusic.nbs
Scroll
## object name, you can set this to anything that is unique
delayedtimer1:
## object type
type: scrollpane
## The actual width of the scrollable area
scrollinnerwidth: 900
## The actual height of the scrollable area
scrollinnerheight: 200
## The width of visible area
width: 200
## The height of visible area
height: 200
## The objects inside the scroll pane
children:
text1:
## some object you want inside the scroll pane
type: text
text: 'Hello this is some example text!'
3D
## object name, you can set this to anything that is unique
skinrenderer:
## object type
type: skin3d
## x position relative to root of parent
x: 0
## y position relative to root of parent
y: 0
## width
width: 1000
## height
height: 100
Functions
Switch
## function name, you can set this to anything that is unique
function1:
## function type
type: switchscene
## name of scene that the board is going to switch to
scene: scene2
Open
## function name, you can set this to anything that is unique
function1:
## function type
type: opencraftingtable
Open
## function name, you can set this to anything that is unique
function1:
## function type
type: openenchantingtable
Buy
## function name, you can set this to anything that is unique
buyfunc1:
## function type
type: itembuy
## name or id of item
item: carrot
## item price
price: 20
## item amount
amount: 1
Sell
## function name, you can set this to anything that is unique
sellfunc1:
## function type
type: itemsell
## name or id of item
item: baked_potato
## item price
price: 20
## item amount
amount: 1
ScrollChange
## function name, you can set this to anything that is unique
scrollchange1:
## function type
type: scrollchange
## which scroll pane to move
object: objectscrollpane
## how much to scroll in x direction
xchange: 10
## how much to scroll in y direction
ychange: 0
Command
## function name, you can set this to anything that is unique
command1:
## function type
type: command
## execute as player or console
executefromconsole: false
## the command (you can use placeholderapi inside command)
command: 'warp spawn'
Set
## function name, you can set this to anything that is unique
enabledsomething1:
## function type
type: setenabledstate
## name of object to enable / disable
object: button1
## disable or enable
enabled: true
Switch
## function name, you can set this to anything that is unique
switchtodifferentservers1:
## function type
type: switchserver
## name of server to switch to
server: survival
Legal
InteractiveBoard uses Guice library and its dependencies which is licensed under Apache 2.0 license that can be found inside the plugin jar.
InteractiveBoard uses a modified part of BKCommonLib library that is licensed under Apache 2.0 license that can be found inside the plugin jar.
InteractiveBoard uses a modified version of XMaterial library that is licensed under the Mit license. The class file which includes the license can be found here https://github.com/CryptoMorin/XSeries/blob/master/src/main/java/com/cryptomorin/xseries/XMaterial.java
InteractiveBoard uses a part of AnimatedFrames plugin for GIF file conversion. The permission to use this code was kindly provided by inventivetalent