Difficulty: Intermediate
This plugin creates a World3DModel in the world (or multiple 3D models). The player can interact with these models (i.e. he can press his interaction key [F] while looking at them), then a GUI shows up. This GUI consists of a background image (an open book, like the journal), and several labels. It lists all players who have played on this world before, this data can be received from the world database (see: plugin.getWorldDatabase()).
There are also two buttons to change the page. These are just two labels which are clickable (see: guiElement.setClickable(boolean)). Once they're clicked, the texts of the labels will be changed, so it gives the impression of changing the page (in addition, a sound file is played [see: player:playGameSound()]).
Once the player presses his ESC key (see: player.registerKeys() and player.setListenForInput()), the guestbook will close (i.e. the visibility will be set to false).
Note: The model and the textures are just very basic in terms of quality.
Additional note: In order to keep the plugin versatile, the coordinates for the particular guestbook models are stored in a "coordinates.txt" file in the plugin main folder. So the coordinates can be changed (and even more instances of the model can be added) easily without the need to recompile the plugin.