Giter Site home page Giter Site logo

jamztheman / maptool Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rptools/maptool

21.0 21.0 6.0 254.5 MB

Now Infused with Nerps!

Home Page: http://maptool.nerps.net

License: GNU Affero General Public License v3.0

HTML 0.17% Java 98.79% JavaScript 0.73% CSS 0.03% Lex 0.15% Python 0.03% Shell 0.04% Perl 0.04% XSLT 0.01%
java open-source role-playing rpg-tool virtual-tables

maptool's People

Contributors

adyoungblood avatar alexwerne avatar azhrei avatar cwisniew avatar dark-ether avatar dependabot-preview[bot] avatar dependabot[bot] avatar ebudai avatar emmebi avatar fishface60 avatar irarara avatar irisiflimsi avatar jaggeroth avatar jamztheman avatar joshsziegler avatar kayila avatar kwvanderlinde avatar melodub avatar merudo avatar michaelperino avatar mikehenry-io avatar mrkwnzl avatar nmeier avatar perkinslr avatar phergus avatar rptools-automation avatar selquest avatar source-knights avatar thelsing avatar xdy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

maptool's Issues

Tokens move erratically depending on where you click them

Reported by dorpond

To replicate: Click on the left side of a token and drag it left, now drag it right - do the same when you click on the right side of the token.

*Looks like what it is doing is onClick->drag it's using the tokens 0,0 position of the cell vs where the mouse button is clicked.

Maptool ver. 1.4.4.0 Fails to Launch After Changing Settings

Hi, I seem to running into an error with the latest version of Maptool. The symptom is Maptool simply fails to launch; I double click the MapTool.exe file, and nothing at all happens. This happened immediately after I adjusted the minimum and maximum memory and the stack size. I assume I entered incompatible values, and that is somehow causing Maptool to fail to load. Things I have tried so far include re-installing Maptool, deleting the .maptool folder in my users folder, and deleting the MapTool folder in the Appdata\Local folder. MapTool version 1.4.3.20 still seem to work just fine for me. I hope this feedback helps to identify the issue, Thanks.

Get NullPointerException whenever Library window is visible

I get the following error with 1.4.4.0 build on OS X and Linux Mint whenever the Resource Library window is visible. It happens on startup and then everytime I try and click anything.

java.lang.NullPointerException at net.rptools.maptool.client.ui.assetpanel.ImageFileImagePanelModel.getImage(ImageFileImagePanelModel.java:162) at net.rptools.lib.swing.ImagePanel.paintComponent(ImagePanel.java:183) at javax.swing.JComponent.paint(JComponent.java:1056) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JViewport.paint(JViewport.java:728) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JLayeredPane.paint(JLayeredPane.java:586) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintChildren(JComponent.java:889) at javax.swing.JComponent.paint(JComponent.java:1065) at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:290) at javax.swing.RepaintManager.paint(RepaintManager.java:1272) at javax.swing.JComponent._paintImmediately(JComponent.java:5158) at javax.swing.JComponent.paintImmediately(JComponent.java:4969) at javax.swing.RepaintManager$4.run(RepaintManager.java:831) at javax.swing.RepaintManager$4.run(RepaintManager.java:814) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) at net.rptools.maptool.client.swing.MapToolEventQueue.dispatchEvent(MapToolEventQueue.java:38) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

MEM settings

When I open Edit>>>Preferences>>>Start Settings and input the desired numbers setting they won't stay there. As soon as I click on the next setting it disappears. Went back to version 1.4.3.20, as this was causing stack overflow problems.

Bug: ImageManager needs exception handling for non image assets

ImageManager is attempting to load non-image assets (hero lab statblocks). Need to put some logic around this!

16:26:21.405 (ImageManager.java:318) [pool-6-thread-1] ERROR net.rptools.maptool.util.ImageManager - BackgroundImageLoader.run(D:\Google Drive\Map Tool Resources\Clint\WrathofRighteous\Players\Wrath.por/200/Grayson Darkhammer,6e0926e8e1440b068c3f6a5014a7bf80): image not resolved
java.io.IOException: Could not load image
at net.rptools.lib.image.ImageUtil.bytesToImage(ImageUtil.java:279) ~[bin/:?]
at net.rptools.maptool.util.ImageManager$BackgroundImageLoader.run(ImageManager.java:316) [bin/:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]

Failed to Create JVM

When i first launched the 1.4.4.0.exe, I loaded a framework that was throwing stack errors. I changed the settings within the preferences to 2024 512 3. Since then I am unable to launch the .exe because it gives me a error saying Failed to Create JVM followed by a Failed to Launch JVM. I have tried to uninstall maptools but it gives same errors even after reinstalling. I am assuming there may be some left over pref files that I am missing.

Side note, I can launch it with the .jar file. I guess since it uses different java files?

Feature: Lumination!

This enhancement adds a new property to lights called lumens.

A negative value, say -20, will subtract "light", therefore creating darkness. Lights are processed in absolute order, so lets say you have the following:

  • Darkness Spell: lumens -20
  • Deeper Darkness: lumens -100
  • Torch: lumens 0 (default if not specified)
  • Daylight Spell: lumens 60

(0) The torch light will first be drawn
(20) The darkness will then draw over the torch light (covering it up)
(60) Daylight will then draw over the darkness
(100) Finally, the Deeper Darkness will draw over everything else so far defined.

Convert packaging to native Oracle javapackager

Transition from jWrapper to Oracle javapackager.

Pros:

  • Native installer to OS vs Native 'executable'
  • Provided by Oracle so not dependant on third party
  • Better JVM argument handling, no more Launcher needed!
  • Less complicated requirements to build
  • Better documented
  • More deployment targets (exe, msi, dmg, app, rpm, deb)

Cons

  • Requires build on target OS (looking into Travis-CI to handle this for us)

MapTool 1.4.4.0: Edit -> Preferences generates unexpected error

I say that the 1.4.4.0 branch had fixes for the adding a new state error that I keep receiving on 1.4.3.20, so I thought I would give it a try. I did gradlew build and it completed without errors. I found in the build/distributions folder a tar file, which I extracted. I changed directory to the extracted dir and ran ./bin/MapTool. The program seems to load alright, but when I go to Edit --> Preferences, I get the following error:

java.lang.UnsatisfiedLinkError: no packager in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
	at java.lang.Runtime.loadLibrary0(Runtime.java:870)
	at java.lang.System.loadLibrary(System.java:1122)
	at jdk.packager.services.userjvmoptions.LauncherUserJvmOptions.<clinit>(LauncherUserJvmOptions.java:53)
	at jdk.packager.services.UserJvmOptionsService.getUserJVMDefaults(UserJvmOptionsService.java:58)
	at net.rptools.maptool.util.UserJvmPrefs.getJvmOption(UserJvmPrefs.java:60)
	at net.rptools.maptool.client.ui.PreferencesDialog.setInitialState(PreferencesDialog.java:873)
	at net.rptools.maptool.client.ui.PreferencesDialog.<init>(PreferencesDialog.java:294)
	at net.rptools.maptool.client.AppActions$13.execute(AppActions.java:575)
	at net.rptools.maptool.client.AppActions$ClientAction.actionPerformed(AppActions.java:2828)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
	at de.muntjak.tinylookandfeel.TinyMenuItemUI.doClick(Unknown Source)
	at de.muntjak.tinylookandfeel.TinyMenuItemUI$MouseInputHandler.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Component.java:6533)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6298)
	at java.awt.Container.processEvent(Container.java:2237)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2295)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
	at java.awt.Container.dispatchEventImpl(Container.java:2281)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at net.rptools.maptool.client.swing.MapToolEventQueue.dispatchEvent(MapToolEventQueue.java:38)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

The message on the console output seems to repeat the above:
Logging stacktrace to Sentry.IO! :: no packager in java.library.path

What packager is this talking about? A Google search of "no packager in java.library.path" doesn't return anything helpful. Is this a depend that needs to be added to gradle.build so it's bundled with it?

StackOverflowError on campaign load

Opening BoT campaign with jvm default stack size caused fatal error...

https://sentry.io/nerps/nerps-maptool/issues/338315719/

StackOverflowError: None
    at java.util.regex.Pattern$CharProperty$1.isSatisfiedBy(Pattern.java:3771)
    at java.util.regex.Pattern$7.isSatisfiedBy(Pattern.java:5271)
    at java.util.regex.Pattern$CharProperty.match(Pattern.java:3776)
    at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
    at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
...
(1019 additional frame(s) were not displayed)

App does not check for new versions in 1.4.4.1

There was a change in Java 9 that causes the AppUpdate check to fail and as such 1.4.4.1 will not prompt to download new releases from GitHub when available.

This function is fixed and will resume working in 1.4.4.2.

Cut and Paste Bug

V1.4.3.20
Really simple to reproduce:

  • Close any opened MT's and open a new instance of MT (this is important)
  • Drag out a token to the map.
  • Select token, right click on it and 'cut'.
  • (Observation) on top Menu, go to Edit and observe that 'paste' is greyed out.
  • Hit Control-V to paste, and nothing will happen.
  • Don't select anything on the map and just hit Control-C (or X)
  • (Observation) on top Menu, go to Edit and notice that 'paste' is no longer greyed out.
  • You can now paste the token, either by menu or by Control-V.

Now, this bug will no long rear its head, during this instance of MT - I can open other campaigns and everything will work fine. This issue only seems to happen one time during a new instance of MT.

Feature request: optional boundary of light sources

Currently, if multiple light sources overlap on the same grid point, the colors combine. It can be hard to tell exactly which light sources are overlapping.

I propose adding an optional keyword border to light definitions, which would create a 1 pixel wide black border at the edge of the light source.

Here's an example: 3 overlapping auras are indistinct and it's not obvious if the signpost token is covered by 1 or 2 auras.
current

With the border keyword, it's obvious that the signpost is covered by 2 auras.
withborders

Can't open Preferences

NOTE: This was using the standalone JAR file download.

Attempting to use Edit/Preferences produces the following:

java.lang.UnsatisfiedLinkError: jdk.packager.services.userjvmoptions.LauncherUserJvmOptions._getUserJvmOptionKeys()[Ljava/lang/String;
	at jdk.packager.services.userjvmoptions.LauncherUserJvmOptions._getUserJvmOptionKeys(Native Method)
	at jdk.packager.services.userjvmoptions.LauncherUserJvmOptions.getUserJVMOptions(LauncherUserJvmOptions.java:128)
	at net.rptools.maptool.util.UserJvmPrefs.getJvmOption(UserJvmPrefs.java:75)
	at net.rptools.maptool.client.ui.PreferencesDialog.setInitialState(PreferencesDialog.java:871)
	at net.rptools.maptool.client.ui.PreferencesDialog.<init>(PreferencesDialog.java:292)
	at net.rptools.maptool.client.AppActions$13.execute(AppActions.java:575)
	at net.rptools.maptool.client.AppActions$ClientAction.actionPerformed(AppActions.java:2828)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.AbstractButton.doClick(Unknown Source)
	at de.muntjak.tinylookandfeel.TinyMenuItemUI.doClick(Unknown Source)
	at de.muntjak.tinylookandfeel.TinyMenuItemUI$MouseInputHandler.mouseReleased(Unknown Source)
...

Error when disconnecting from the server as host (GM)

I get this error first time I disconnect from the server while hosting:

java.lang.NullPointerException at net.rptools.maptool.util.UPnPUtil.closePort(UPnPUtil.java:207) at net.rptools.maptool.client.MapTool.disconnect(MapTool.java:1108) at net.rptools.maptool.client.MapTool.stopServer(MapTool.java:984) at net.rptools.maptool.client.AppActions.disconnectFromServer(AppActions.java:2007) at net.rptools.maptool.client.AppActions$57.execute(AppActions.java:1999) at net.rptools.maptool.client.AppActions$ClientAction.actionPerformed(AppActions.java:2828) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:369) at de.muntjak.tinylookandfeel.TinyMenuItemUI.doClick(Unknown Source) at de.muntjak.tinylookandfeel.TinyMenuItemUI$MouseInputHandler.mouseReleased(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6578) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3343) at java.desktop/java.awt.Component.processEvent(Component.java:6343) at java.desktop/java.awt.Container.processEvent(Container.java:2259) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4961) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2317) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4793) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4539) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4480) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2303) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2758) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4793) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:766) at java.desktop/java.awt.EventQueue.access$500(EventQueue.java:97) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:717) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:711) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:99) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:739) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:737) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:736) at net.rptools.maptool.client.swing.MapToolEventQueue.dispatchEvent(MapToolEventQueue.java:38) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:199) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Second time everything goes through fine I got this problem in the 1.4.4.0 also.

Feature Request: Texture Picker

When I draw with the MT drawing tools, I draw using a variety of textures on my map. In addition, I might spend many days (or weeks) drawing a map to completion.

Sometimes I want to draw again, but I forgot where I have it in my Resource Library and what version of that specific texture it was (my texture library is huge, sometimes even having 50/100/200 of each texture! (which I would also love to see a texture scaler built in to MT to eliminate the need for multiple pixel versions of each assets)).

Request: In the texture picker within our current drawing tool, if we also had a list of all the textures we are currently using on that map and could choose from on of them, that would be awesome, and speed up the GM's job of getting that next session ready.

Lighting Performance Regression versus 1.3b91

Maps with large background images and large numbers (like 40+) of light sources are reasonably usable in 1.3b91. There is a slight lag when moving tokens but it's less than a few seconds.

The same map, loaded into 1.4.4, is completely unusable. There is a delay of 40-90 seconds between dragging a token and the map being updated to reflect the movement.

Steps to reproduce:

  1. Load https://www.prismnet.com/~mlangsdo/eastern-theatre.cmpgn in MapTools 1.3.b91.
  2. Go to the "Eastern Campaign" map and start dragging tokens. Notice a 1-3 second delay between releasing the token and the map being updated.
  3. Load the same campaign in MapTool 1.4.4.
  4. Go to the "Eastern Campaign" map and start dragging tokens. Notice a 60-120 second delay.

Error when disconnecting with UPnP

Reported via Forums:
http://forums.rptools.net/viewtopic.php?f=60&t=23681&p=268865#p268861

Regarding UPnP, I don't need to use it! Just a very minor, circumventable annoyance/non-optimal thing. I can just port forward and it's just as well as long as my local IP doesn't change - or I can just put up with having to disconnect twice, which is really not a huge strain. Here's the full error text when disconnecting with UPnP on:

1.4.1.8 doesn't have this issue. 1.4.0.5 doesn't seem to work with port forwarding on my particular router at all, but that's a different problem.

Router: Netgear WNDR3700

Stacktrace

java.lang.NullPointerException
   at net.rptools.maptool.util.UPnPUtil.closePort(UPnPUtil.java:207)
   at net.rptools.maptool.client.MapTool.disconnect(MapTool.java:1108)
   at net.rptools.maptool.client.MapTool.stopServer(MapTool.java:984)
   at net.rptools.maptool.client.AppActions.disconnectFromServer(AppActions.java:2007)
   at net.rptools.maptool.client.AppActions$57.execute(AppActions.java:1999)
   at net.rptools.maptool.client.AppActions$ClientAction.actionPerformed(AppActions.java:2828)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
   at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
   at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
   at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
   at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
   at de.muntjak.tinylookandfeel.TinyMenuItemUI.doClick(Unknown Source)
   at de.muntjak.tinylookandfeel.TinyMenuItemUI$MouseInputHandler.mouseReleased(Unknown Source)
   at java.awt.Component.processMouseEvent(Component.java:6533)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
   at java.awt.Component.processEvent(Component.java:6298)
   at java.awt.Container.processEvent(Container.java:2237)
   at java.awt.Component.dispatchEventImpl(Component.java:4889)
   at java.awt.Container.dispatchEventImpl(Container.java:2295)
   at java.awt.Component.dispatchEvent(Component.java:4711)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
   at java.awt.Container.dispatchEventImpl(Container.java:2281)
   at java.awt.Window.dispatchEventImpl(Window.java:2746)
   at java.awt.Component.dispatchEvent(Component.java:4711)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
   at java.awt.EventQueue.access$500(EventQueue.java:97)
   at java.awt.EventQueue$3.run(EventQueue.java:709)
   at java.awt.EventQueue$3.run(EventQueue.java:703)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
   at java.awt.EventQueue$4.run(EventQueue.java:731)
   at java.awt.EventQueue$4.run(EventQueue.java:729)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
   at net.rptools.maptool.client.swing.MapToolEventQueue.dispatchEvent(MapToolEventQueue.java:38)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Typos

Reported by: Wolph42

Token menu, vbl tab at the bottom "hide preivew"

Campaign properties, sight tab: no new line before "distance = y - Distance...."

Token opacity value in the token editor initially says "1" and changes to "100%" as soon as you interact with it.

Add screen capture utility

Add a screen capture utility like TokenTool and allow as texture.

Useful to copy background of map and paste over secret doors or other markings baked into a map.

Screen capture map and make it a texture/drawable.

Create a snipping tool like the one Trevor added to TokenTool, so that we can snip part of a bound map and instantly make that a object/background texture or drawable, so that we can now use that when adding/modifying to the map.

Use cases:

  • A bound map has a dead body laying on the floor or doors all over the place. We want to cover that body because it doesn't match our encounter, or we want to cover the doors and put in our own 'swivel doors' in place. There are so many bound maps out there with so many objects on them that don't fit our specific encounter, to cover them quickly and easily in MT without having to pull up the map in Photoshop would greatly speed up map building.

Adding new state causes java.lang.ArrayIndexOutOfBoundsException

Reported by paulstrait

One other issue: When I try to add a new state and upload a new image, I get a java.lang.ArrayIndexOutOfBoundsException. I can take an old state I already have and modify it. Also if I try to create a new state that doesn't involve an image (e.g., a dot), the 'Add' button is grayed out.

When you add a new "state" you can now "insert" that state anywhere in the list. But it looks like I forgot to initialize the array index when that dialog loads. A workaround is to simply click up the list anywhere and then add the new state and it should work. (then move it down if you want it at the bottom)

Lighting isn't immediately forcing to client

1.4.1.7 and 1.4.3.20 (note: this problem does not exist in 1.3B91)

Simply put, when lighting is turn on or off on a token (GM side), the changes are not immediately reflected on the client side until a token is clicked.

Settings I used in test:
Start Server: Strict Token Ownership and Restricted Player Impersonation were checked. I also tried both I.View On and Off with no difference.
MT Vision: Night
FOW: On
VBL: Yes, rooms were all traced with VBL.

Steps:

  1. Drop some tokens (PC and NPC) in the room
    2 Assign a light to a PC token
  2. Expose some FOW (I did Control-I)
  3. Turn off light on the token from the GM's side
  4. Observe that the client can still see the lit up area. (Fail)
  5. Move some NPC's around and notice how the client can see them move around. (results of the fail)
  6. If a player happens to click on a token, then the lighting changes are finally pushed down and everything goes black.
  7. Conclusion: Screen should have gone black the moment the GM turned off lights - without having to click on anything on the client side.

Bug Fix to allow tokens without sight to move

Allow player owned tokens without "sight" to move within any area other player owned tokens can "see".

Reason/example: Wizard summoned spell token, ie Flaming Sphere, doesn't have sight but Wizard needs to be able to move token when Individual FoW is on.

Update UI to FX

Begin migration of MapTool to Java FX!

  • Launch current MapTool App on FX thread
  • Migrate main Menu UI to FX
  • Migrate Toolbar UI to FX
  • Investigate FX Dockable Windows
  • Migrate Dockable Windows to FX
  • Migrate background image tasks to new FX Image class

Add setOwnedByAll macro function

Currently there is no way to set token property Owned by All, you can only set individual ownership.

Proposed macro function setOwnedByAll(boolean [,tokenID]) returns boolean

Automated Reporting using Sentry.io

Add an automated error reporting tool that sends stacktraces and debug info to Sentry.io for analysis!

No personal data is sent, only Java Stacktraces and if you have a MapTool server, the server settings (no passwords are sent).

*Note: Opeing issue retroactively for tracking and awareness.

Enhancement: Check for new version

Add mechanism to check for a new MapTool version on every load and prompt user to either download it or direct them to the page... Possibly auto-update...

Feature Request: Multiple Images per Token

To be able to store multiple token images per token. In addition, have a macro to be able to switch those images.

Having to depend on many tables (or one huge one that they all share) to pull this off is just silly (imagine having 45 RPToks that can change shape).

The way I see it, everything token related should be inside the RPTok, including their multiple images - not externally in tables, that may not even exist in your current campaign..

Updated Spotless

Updated spotless to 3.7.0 and added background image for macos install process

All Players Ownership Not Sticking

As it is, it is too confusing. If an owner is already selected and we check 'All Players', it won't save and nothing happens. Observing who has ownership will still show the previous owner and 'All Players' is not checked, even though we checked it and saved it.

The only way All Players stays checked after a save, is if all previous owners are unchecked first.

I just think this area could use improvement.

Options:

  1. If we check All Players, then automatically uncheck all previous owners (cleanest visually)
    2 If we check All Players, then ignore the other checked owners (not so clean)

IllegalArgumentException: Width (0) and height (1) cannot be <= 0

https://sentry.io/nerps/nerps-maptool/issues/400070924/

IllegalArgumentException: Width (0) and height (1) cannot be <= 0
    at net.rptools.maptool.client.ui.drawpanel.DrawablesPanel.drawDrawables(DrawablesPanel.java:93)
    at net.rptools.maptool.client.ui.drawpanel.DrawablesPanel.paintComponent(DrawablesPanel.java:85)
    at net.rptools.maptool.client.swing.MapToolEventQueue.dispatchEvent(MapToolEventQueue.java:38)
...
(33 additional frame(s) were not displayed)

Width (0) and height (1) cannot be <= 0

sendToBack & bringToFront macros break states and bars

Per the wiki

As of 1.3.b63 there appears to be a bug in which token states are not rendered properly after calling sendToBack or bringToFront. As a work-around, macros should change the token ordering first, then turn states on or off.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.