MCPcopy Index your code
hub / github.com/RPTools/maptool

github.com/RPTools/maptool @1.18.6

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.18.6 ↗ · + Follow
12,289 symbols 49,868 edges 1,042 files 3,518 documented · 29%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

GitHub branch check runs Crowdin GitHub License GitHub Downloads (all assets, latest release)

GitHub Issues or Pull Requests by label GitHub Issues or Pull Requests by label

GitHub Release GitHub Release

Discord Discord

MapTool GitHub Repo stars

Welcome to the MapTool repository! This is the official repository for the MapTool Virtual Tabletop

So what is MapTool?

MapTool is intended for use in supporting table-top role playing games, such as D&D, PathFinder, GURPS, Call of Cthulhu, Star Wars, Shadowrun, and many others. It is a mature and full-featured Virtual Tabletop (VTT) application that allows users to create, manage, and play their favorite pen and paper either in person or remotely.

Included are not only powerful tools for the creation of detailed maps, but also a chat function, detailed token management (allowing you to track properties of the units placed on the map and display health and status information), and an initiative tracker. Functions not being used can be hidden out of sight. These features enable your computer screen to function as a virtual table-top, fulfilling the role of battlemats and dry-erase markers and providing for infinitely scrollable maps and the ability to use a large-screen TV or video projector. It is game system agnostic, meaning that while MapTool has special support for some game systems (like hexes for GURPS or square templates for D&D 4E) there is no requirement for you to use these features.

The best part is all this isn't limited to a single PC. You can utilize the integrated server function to connect to players wherever there's an Internet connection. Miss your buddy in Singapore? Not a problem. Roll up that character, and then your sleeves.

And we don't stop there! Not content with just emulating the tabletop, we seek to improve upon the tabletop experience. This, truly, is where MapTool shines. A set of "topology" and vision features enable the GM to limit the view of his players, revealing the map as they explore it. Walls and other objects can prevent players from seeing what lies behind them. Darkness can be made to fall, blinding players who lack a light. Lights can be set on objects or on tokens that illuminate however much of the map you wish. If the GM wishes, s/he can limit the view of players to what their specific token sees, adding a whole new level to the experience of splitting up the party. Woe be to the character who can't see around the corner of a wall but steps out into the view of the enemy!

Version Numbers

MapTool follows Semantic Versioning for version numbering.

Development builds contain the latest features and improvements, while stable releases focus on reliability and bug fixes. Critical bug fixes and security updates are backported to both stable and development branches.

For Users

MapTool is available for Windows, Mac OS X, and Linux.

You can download the latest stable release from the following locations

There are several tutorials on the MapTool wiki. on getting started using MapTool. The MapTool installers for each platform are self contained and include everthing needed to run MapTool.

For Developers

See the CONTRIBUTING.md file for information on setting up your development environment and contributing to MapTool.

Requirements

Resources

  • Website: https://rptools.net/
  • Forums: https://forums.rptools.net
  • Wiki: https://wiki.rptools.info/index.php/Main_Page
  • Discord: https://discord.gg/dZy7HeYYVY
  • Reddit: https://www.reddit.com/r/MapTool/
  • Crowdin: https://crowdin.com/project/maptool

Contributing to MapTool

MapTool wouldn't be where it is today without the contributions of many people. We welcome contributions from anyone who is interested in helping out, you don't need to be a developer to contribute. For detailed information about how you can contribute to MapTool, please see our Contributing Guide.

Recommended IDE

We currently recommend IntelliJ IDEA as our editor of choice although Eclipse and other IDE's should work just fine as well. For IntelliJ IDEA, simply open the project folder and it will detect it as a Gradle project and you should be ready to go with minimal effort.

Extension points exported contracts — how you extend this code

Macro (Interface)
@author drice [56 implementers]
src/main/java/net/rptools/maptool/client/macro/Macro.java
MessageHandler (Interface)
@author drice Interface for handling client server messages. [8 implementers]
clientserver/src/main/java/net/rptools/clientserver/simple/MessageHandler.java
CalloutRenderer (Interface)
Interface implemented by callout renderers. [17 implementers]
src/main/java/net/rptools/maptool/client/ui/zone/callout/CalloutRenderer.java
ActivityListener (Interface)
@author drice Interface for handling activity from connections [2 implementers]
clientserver/src/main/java/net/rptools/clientserver/ActivityListener.java
Filter (Interface)
Interface for matchToken. [10 implementers]
src/main/java/net/rptools/maptool/model/Zone.java
Connection (Interface)
(no doc) [3 implementers]
clientserver/src/main/java/net/rptools/clientserver/simple/connection/Connection.java
Library (Interface)
Interface for classes that represents a framework library. [6 implementers]
src/main/java/net/rptools/maptool/model/library/Library.java
Server (Interface)
(no doc) [3 implementers]
clientserver/src/main/java/net/rptools/clientserver/simple/server/Server.java

Core symbols most depended-on inside this repo

get
called by 2775
src/main/java/net/rptools/maptool/util/preferences/Preference.java
add
called by 1786
src/main/java/net/rptools/maptool/client/ui/htmlframe/HTMLPanelContainer.java
getText
called by 1316
src/main/java/net/rptools/maptool/language/I18N.java
put
called by 1060
src/main/java/net/rptools/maptool/client/script/javascript/JSObject.java
getFrame
called by 931
src/main/java/net/rptools/maptool/client/MapTool.java
getName
called by 745
src/main/java/net/rptools/maptool/model/library/Library.java
toString
called by 660
src/main/java/net/rptools/maptool/client/functions/InputFunction.java
append
called by 602
src/main/java/net/rptools/maptool/client/ui/logger/JTextAreaAppender.java

Shape

Method 10,767
Class 1,336
Enum 109
Interface 73
Function 4

Languages

Java100%
TypeScript1%

Modules by API surface

src/main/java/net/rptools/maptool/model/Token.java230 symbols
src/main/java/net/rptools/maptool/client/ui/token/dialog/edit/EditTokenDialog.java170 symbols
src/main/java/net/rptools/maptool/client/ui/MapToolFrame.java165 symbols
src/main/java/net/rptools/maptool/model/Zone.java164 symbols
src/main/java/net/rptools/maptool/client/ui/zone/renderer/ZoneRenderer.java128 symbols
src/main/java/net/rptools/maptool/client/tool/WallTopologyTool.java116 symbols
src/main/java/net/rptools/maptool/client/ui/AbstractTokenPopupMenu.java94 symbols
src/main/java/net/rptools/maptool/client/ServerCommandClientImpl.java84 symbols
src/main/java/net/rptools/maptool/client/AppActions.java84 symbols
src/main/java/net/rptools/maptool/client/ui/mappropertiesdialog/MapPropertiesDialog.java82 symbols
src/main/java/net/rptools/maptool/client/ui/commandpanel/CommandPanel.java80 symbols
src/main/java/net/rptools/maptool/model/MacroButtonProperties.java75 symbols

For agents

$ claude mcp add maptool \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact