Compare commits

...

295 Commits

Author SHA1 Message Date
Mike Primm 1e3ceed5d7 Add zooming to flat map (why not? :) ) 2011-05-13 10:59:06 +02:00
FrozenCow 88ff70ac48 Added formatting profile which is used for Dynmap. This should look a lot like the profile used in Bukkit. 2011-05-13 10:48:37 +02:00
FrozenCow 84d01c530a Replaced tabs with spaces to conform the Bukkit standards. 2011-05-13 10:41:02 +02:00
Mike Primm daa2d0f186 Pull debug message 2011-05-13 10:31:50 +02:00
Mike Primm 17644a5778 Add tile data coloring (aka colored wool support), combine rendering
of default tiles and their zoomed counterparts (saves reloading the
default tile, and keeps the scale levels of the map consistent during
a fullrender and otherwise)
2011-05-13 10:31:38 +02:00
Mike Primm 0a8f2a182a Shift all imageIO and file I/O to async thread
Minus the version change in plugin.yml.
2011-05-13 10:29:38 +02:00
zeeZ 619485212d First iteration of weather icons 2011-05-10 12:51:52 +02:00
zeeZ 7f5d3ab23d Consistency to make Kilandor happy :-). 2011-05-10 12:51:52 +02:00
zeeZ bb45cc10cb Added weather to json world output (hasStorm and isThundering) 2011-05-10 12:51:52 +02:00
zeeZ c0479bff05 Fixed NPE if using regionless config. 2011-05-10 12:51:52 +02:00
zeeZ cf1d6c414d Organize imports 2011-05-10 12:51:52 +02:00
zeeZ 9eab216525 Use Bukkit's way to strip colors. 2011-05-10 12:51:52 +02:00
FrozenCow b8fe65bc99 Partly reverted previous change to get back to zeeZ' getDisplayName. 2011-05-10 12:51:52 +02:00
FrozenCow 1a5ddeeda5 Removed generation of .tar.bz2. 2011-05-10 12:26:26 +02:00
Mike Primm 5f23afe608 Don't need additional delay - using AsycnQueue for that 2011-05-10 12:26:18 +02:00
Mike Primm 0a1de1b18e Add option to run incremental renders on sync thread, using same chunk
logic as timesliced full render, in order to handle cases where
assumption that all chunks needed for incremental render are already
resident (which can be false if player telepots, move quickly,
multiple players are active, etc).
2011-05-10 12:26:11 +02:00
Mike Primm 88db6445f9 Added timeslicing to configuration 2011-05-10 12:26:02 +02:00
Mike Primm 6c708d1b3a Add version log message - keep track builds easier 2011-05-10 12:25:56 +02:00
Mike Primm dcdfb3da5d Trap on bogus world names or player with bad current location 2011-05-10 12:25:48 +02:00
Mike Primm 95cc3ae869 Add "time-sliced" implementation of fullrender, which does one tile at
a time using the Bukkit scheduler while using a tunable interval
between tiles (0.5 second default), and avoids player timeouts and
blooming the chunk and entity population.
2011-05-10 12:25:34 +02:00
FrozenCow 106f95d8b6 Removed a println. 2011-05-08 21:15:44 +02:00
FrozenCow be60623719 Fixed tabs. 2011-05-07 22:11:41 +02:00
FrozenCow ff026e91b6 Disabled regions component by default. 2011-05-07 00:20:34 +02:00
FrozenCow b66be7a47c Merge remote-tracking branch 'kilandor/master' 2011-05-07 00:04:05 +02:00
FrozenCow 92e3ec5f08 Merge remote-tracking branch 'zeez/master' 2011-05-06 23:19:37 +02:00
FrozenCow c4e1362274 Added another way to specify configuration file. 2011-05-06 23:18:46 +02:00
zeeZ 63b9579fa5 Strip colors off chat, use getDisplayName instead of getName 2011-05-01 23:11:29 +02:00
zeeZ 5f32f8fb99 Added Google Maps API version selection to fix map changes 2011-04-28 16:58:30 +02:00
zeeZ ca9aa0727f Fix for worlds with weird names and URLDecode mumbo-jumbo 2011-04-28 16:34:50 +02:00
Jason Booth b3ccd203c8 Added some info
Fix for spam warning for php(Thanks for bug report flames)
2011-04-13 20:23:24 -05:00
Jason Booth 8e59f37995 Initial Support for Regions system on dynmap
Included Worldguard support(default)
Also residence support(incomplete)
2011-04-13 19:58:25 -05:00
zeeZ 91b60be572 Less config checks in loop, added newline at EOF 2011-04-11 23:57:10 +02:00
zeeZ 69fcc1706e Option to treat hiddenplayers.txt as a whitelist. 2011-04-11 04:10:47 +02:00
zeeZ ab6352a17d Hidden players stored in lowercase. 2011-04-11 02:40:03 +02:00
zeeZ 631f06d091 More detailed permissions 2011-04-11 02:27:56 +02:00
zeeZ 8d5f081cdf Compass style based on map type. Hacky because widgets have classes, not IDs 2011-04-09 08:24:52 +02:00
zeeZ 553a956949 Flipped flat map so North is up 2011-04-08 21:40:16 +02:00
FrozenCow d53b3bc340 Added HighlightTileRenderer (thanks in part to rockNme2349) 2011-04-07 15:46:50 +02:00
FrozenCow eb276dd59d Another attempt to make server conform http. 2011-04-06 00:54:48 +02:00
FrozenCow ad33ef79d9 Fixed up.php. 2011-04-05 23:25:11 +02:00
FrozenCow b47bbee4e8 Cleaned up join/quit messages (not being send as chat messages) 2011-04-05 22:58:46 +02:00
FrozenCow e1e13df4b2 Removed redundant configuration values and made use of customizable join/quit messages. 2011-04-05 22:30:43 +02:00
FrozenCow d4a2d2d32f Changed version to 0.16. 2011-04-05 01:05:51 +02:00
FrozenCow 445f37475a Added php proxy. 2011-04-03 17:15:19 +02:00
FrozenCow 0dca8d9cfe Fixed a incompatiblity with FF3 (and others). 2011-04-02 00:52:24 +02:00
FrozenCow 060f4641d4 Added option for digital clock to timeofday. 2011-03-31 16:00:47 +02:00
FrozenCow f93eb8dcbc Changed clocks to be components. 2011-03-31 15:53:42 +02:00
FrozenCow 1cda538eef Dynamically load javascript files of components. 2011-03-31 13:06:34 +02:00
FrozenCow 6622db1b2c Simplified component-creation, dropping IE8 compatibility. 2011-03-31 12:54:32 +02:00
FrozenCow 6eface57ae Separated playermarkers to a component. 2011-03-31 12:44:42 +02:00
FrozenCow 7464e5b809 Separated chatbox to a separate component (into different files). 2011-03-31 12:32:27 +02:00
FrozenCow 9a09cace54 Separated chat-balloon-code to a component. 2011-03-29 23:42:56 +02:00
alron fb825daa04 Force maven to treat everything as UTF-8. Removed a warning at compile time. 2011-03-29 12:22:54 -07:00
FrozenCow 0b421209a2 Small fix for invalid http response of updates. 2011-03-29 01:16:52 +02:00
FrozenCow 43bc625c08 Another fix for IndexOutOfBounds (by ignoring it...) 2011-03-29 00:59:10 +02:00
FrozenCow 43a652f15a Fixed IndexOutOfBoundsException (sortof?) 2011-03-28 18:32:29 +02:00
FrozenCow 649edfdc2d Changed events for the latest Bukkit changes. 2011-03-28 18:27:11 +02:00
FrozenCow 2a9b768e3f Removed onLoad again. 2011-03-27 13:14:35 +02:00
John Du Hart 064f911f5a Mised the maps API URL 2011-03-26 00:15:54 +01:00
John Du Hart 3c094ec87d Implemented protocol-relative URLs (this is tested) 2011-03-24 18:32:43 +01:00
FrozenCow 2be0cd3671 Added initial work for 'componentizing' client-side. 2011-03-21 20:46:53 +01:00
FrozenCow 15a8e03e9e Added client-side events to map. 2011-03-21 19:07:30 +01:00
FrozenCow 777b55f27b Changed version to 0.15. 2011-03-20 18:12:02 +01:00
FrozenCow 09568294f3 Removed getWorld. 2011-03-20 18:09:54 +01:00
FrozenCow 394dfff8f4 Removed chunkgenerated and chunkloaded from configuration. 2011-03-17 22:30:14 +01:00
FrozenCow 9206fce435 Set version to 0.14. 2011-03-17 22:26:37 +01:00
FrozenCow 64733202c0 Merged from flames/master 2011-03-17 22:10:59 +01:00
FrozenCow 082b3577fb Removed jQuery.js (using jQuery from Google now.) 2011-03-17 21:54:32 +01:00
FrozenCow e4fa4fe015 Merge branch 'master' of https://github.com/flames/dynmap 2011-03-17 21:43:02 +01:00
Arthur Mayer 2bfbaa241b added forgotten jquery.mousewheel.js 2011-03-17 21:41:24 +01:00
FrozenCow c13517949b Hides scrollbuttons when they are not needed. 2011-03-17 21:10:35 +01:00
FrozenCow 79c2989b37 Merge branch 'master' of https://github.com/flames/dynmap 2011-03-17 15:55:24 +01:00
Arthur Mayer 89b66613f0 scrollbutton images 2011-03-17 15:53:14 +01:00
FrozenCow cc7b33ef47 Merge branch 'master' of https://github.com/flames/dynmap 2011-03-17 15:46:14 +01:00
Arthur Mayer 954ab689e9 scrollbuttons added and small change for css (because i want it so!) 2011-03-17 15:43:28 +01:00
FrozenCow 5e325d00ea Corrected image references from css. 2011-03-17 15:30:30 +01:00
FrozenCow 37ad28dbcc Removed empty line. 2011-03-17 03:29:25 +01:00
FrozenCow 3bed604190 Another import removal. 2011-03-17 02:36:26 +01:00
FrozenCow 550a607ec9 Organized imports. 2011-03-17 02:21:04 +01:00
FrozenCow 2c0717f3d9 Merge branch 'master' of https://github.com/flames/dynmap 2011-03-17 00:03:05 +01:00
Arthur Mayer 105e2d1829 css for playerlist scrolling. thanks lechd for help. js part comming
soon :P
2011-03-16 23:56:04 +01:00
FrozenCow e281b55c3f Added flatmap-icon. 2011-03-16 14:12:54 +01:00
FrozenCow 05aaa1c39d Fixed website and other not very interesting stuff in pom.xml. 2011-03-16 02:28:49 +01:00
FrozenCow 4d5d8d63bf Made pom.xml refer to TheYeti's permissions' groupId and it use the latest version. 2011-03-16 01:31:05 +01:00
FrozenCow e5520934f6 Merge branch 'master' of https://github.com/Kilandor/dynmap 2011-03-16 01:21:53 +01:00
Jason Booth 2cef9731ed WebChat enhancement and fixes
Added Spam Message config
Internal server now replies a spam message
Fixed getting webchat-interval to get int rather than double then cast
Fixed holding down "enter" on the empty chat line would spam chat attempts
Fixed so jsonip.appspot query is only done once
2011-03-15 19:17:58 -05:00
FrozenCow 831fb04bae Revert "Revert "Bleh, Old Permissions. Bleh, hardcoded artifact location.""
This reverts commit 8105a1d2a5.
2011-03-16 01:02:33 +01:00
Arthur Mayer 07cb3ad1b3 readded modified sk89q colorssheme, its contains now beta 1.3 blocks
and snow is not that bright.
2011-03-15 23:59:16 +01:00
Arthur Mayer 4a2f82a7d6 messagettl for chat also in seconds :) 2011-03-15 23:56:22 +01:00
FrozenCow 58060137b4 Made webchat-interval in seconds. 2011-03-15 22:47:12 +01:00
FrozenCow 38e997cf37 Added webchat-interval for anti-spam webmessaging. 2011-03-15 22:43:48 +01:00
FrozenCow 6c6d29a402 Removed some warnings, redisabled BufferedOutputStream closing. 2011-03-15 21:04:53 +01:00
FrozenCow 8105a1d2a5 Revert "Bleh, Old Permissions. Bleh, hardcoded artifact location."
This reverts commit 5fa0bb1fa6.
2011-03-15 19:38:53 +01:00
FrozenCow 437e82387b Merge remote-tracking branch 'alron/master' 2011-03-15 16:53:12 +01:00
FrozenCow 5eb070cd94 Made dynmap compatible with chat-plugins who cancel chat-events. 2011-03-15 14:03:04 +01:00
FrozenCow 5a878cbd0d Added empty onLoad method 2011-03-15 13:22:05 +01:00
FrozenCow d5ab98deaf New coloring system for flatmap. 2011-03-15 00:01:08 +01:00
alron 19a7dba613 Doesn't change anywhere? Probably should be final. 2011-03-12 01:38:34 -08:00
alron 57c952a1cd oops, didn't need that ^^ 2011-03-12 01:36:43 -08:00
alron 77cc1a70c4 Close potential filedescriptor leak. 2011-03-12 01:35:07 -08:00
alron 0007acd05b Close potential filedescriptor leak. 2011-03-12 01:33:30 -08:00
alron 5fa0bb1fa6 Bleh, Old Permissions. Bleh, hardcoded artifact location. 2011-03-12 01:23:19 -08:00
FrozenCow 10e03c4219 Abstracted permissions. Cleaned up DynmapPlugin. 2011-03-11 16:05:54 +01:00
FrozenCow 47e1f20a15 Fixed shutting down http server(?) 2011-03-11 15:22:14 +01:00
FrozenCow 612966734a Fixed very long shutdown(?) 2011-03-11 15:18:48 +01:00
FrozenCow 70429dc5a4 Merge branch 'master' of https://github.com/flames/dynmap 2011-03-11 15:18:41 +01:00
FrozenCow cbe562d33d Render command now responds with a nice message. 2011-03-10 22:59:03 +01:00
Arthur Mayer f071e12524 added sk89q's custom colors txt 2011-03-10 20:46:56 +01:00
FrozenCow 0657d9c559 Code cleanup. 2011-03-10 15:59:19 +01:00
FrozenCow 29a3391ed8 Merge remote-tracking branch 'kilandor/master' 2011-03-10 12:03:56 +01:00
Jason Booth d296724755 Fix client side timestamp problem
Added Support for standalone webchat by reading a json file
Fix for jsonfile-interval in code
Added working php script with spam prevention, for webchat
2011-03-10 00:11:43 -06:00
Jason Booth 965686d44c Cleanup Moved CSS and JS to matching folders 2011-03-09 17:43:24 -06:00
Jason Booth d4bc0863b8 Merge branch 'master' of git://github.com/FrozenCow/dynmap 2011-03-09 16:42:49 -06:00
Arthur Mayer 363339c632 important fix for css, forgotten in my last commit, FrozenCow, please
pull
2011-03-09 17:36:15 +01:00
FrozenCow ead24cc304 Added heightmap like combination for flatmap. 2011-03-08 16:42:21 +01:00
FrozenCow 02e0f0aa24 Fixed being able to render other worlds from command. 2011-03-08 02:39:16 +01:00
FrozenCow d98fe89c42 Fixed not being able to follow players. 2011-03-08 01:22:03 +01:00
FrozenCow b985a55b92 Changed chat-mechanism a bit. 2011-03-07 22:07:34 +01:00
FrozenCow 072924a2a5 Renamed embedded.css to embedded_example.css. 2011-03-07 21:04:37 +01:00
Jason Booth fe0c6556ed Merge branch 'master' of git://github.com/FrozenCow/dynmap
Conflicts:
	colorschemes/ovocean.txt
	src/main/java/org/dynmap/MapManager.java
2011-03-07 13:39:58 -06:00
Arthur Mayer 07010f36ac another fix 2011-03-07 08:14:41 +01:00
Arthur Mayer fe93d372ab css fixes, allow to use dynmap embedded into a website or standalone. 2011-03-07 08:10:30 +01:00
Arthur Mayer f4ba02cd23 fix, json has boolean, so checking for boolean and not string.
thanks dashkal for testing that
2011-03-07 07:48:46 +01:00
Arthur Mayer bc7ddaf9d2 some fix to allowchat 2011-03-07 07:13:32 +01:00
Arthur Mayer 32fdf9da86 added option to disable webchat input 2011-03-07 07:07:48 +01:00
Arthur Mayer 689df03b78 merged latest changes, added ability to embed dynmap into a website. 2011-03-07 03:45:42 +01:00
FrozenCow 3fd0ed89b0 Removed (seemingly broken) event BLOCK_DAMAGED. 2011-03-06 14:50:15 +01:00
FrozenCow 1001028c2a Updated configuration to reflect flatmap changes. 2011-03-06 14:49:29 +01:00
FrozenCow f3c90f0aae Added prefix to flatmap. 2011-03-06 14:45:26 +01:00
FrozenCow 090f417f32 Added ability to specify colorschemes per map/renderer. 2011-03-05 18:38:17 +01:00
FrozenCow 803867fbc9 Fixed unfollowing when panning to another player. 2011-03-05 17:43:41 +01:00
FrozenCow a4564889df Fixed map-icons. 2011-03-05 17:42:07 +01:00
FrozenCow 8d70839d3b Some changes after running Findbugs. 2011-03-05 16:09:26 +01:00
FrozenCow b0c84234cc Added configurable render-triggers. 2011-03-05 15:39:21 +01:00
FrozenCow 41bf56fccb Optimized stringifyJson a bit. 2011-03-04 22:17:50 +01:00
FrozenCow d1f280eb0f Cleaned Http handling a bit. 2011-03-04 21:31:16 +01:00
FrozenCow 9ce160f1b9 Enabled '-' and '.' to be valid world-characters. 2011-03-04 20:15:52 +01:00
FrozenCow e771d94f24 Added configuration caching. 2011-03-01 18:52:15 +01:00
FrozenCow c1603f1060 Changed skin url from minecraft.net to s3.amazonaws.com. 2011-03-01 18:21:15 +01:00
FrozenCow d54532d899 Merge remote-tracking branch 'flames/master' 2011-03-01 02:01:51 +01:00
FrozenCow f4f4a33b8b Implemented FlatMap fullrender + required clientlib. 2011-03-01 01:59:33 +01:00
FrozenCow 1755411545 Added default equals method to MapTile. 2011-03-01 01:58:33 +01:00
Arthur Mayer d200b0b8c5 moved all images to separate folder 2011-03-01 00:01:35 +01:00
FrozenCow 9fea1eafdb Added shitty-looking top-down flat map. 2011-02-28 19:26:05 +01:00
FrozenCow ff36e4f87a Fixed incorrect offset when using maximumheight. 2011-02-28 19:24:32 +01:00
FrozenCow 686331d1a5 Better error status message. 2011-02-28 19:23:25 +01:00
FrozenCow 0372329d06 Fixed incorrect offset with maximumHeight. 2011-02-26 23:02:11 +01:00
FrozenCow a04215be8f Alertbox does not open when opening page anymore. 2011-02-26 21:33:02 +01:00
FrozenCow 84b86f25a3 Removed BukkitPlayerDebugger: incompatible with Bukkit. 2011-02-26 20:31:26 +01:00
FrozenCow 1e04d10b35 Nicer invalid update-url handling (for invalid world-names or non-existing worlds). 2011-02-26 20:27:54 +01:00
FrozenCow 5778611227 Fixed JsonTimerTask. 2011-02-26 18:23:35 +01:00
FrozenCow 119abb33eb Merge remote-tracking branch 'alron/master' 2011-02-24 16:10:29 +01:00
alron 001a865c2a Renamed assembly.xml to more accurately reflect what it is doing. As assembly can me many many things with maven. 2011-02-23 19:18:09 -08:00
alron 550d6e401f Moved assembly file into more maven consistent location. 2011-02-23 19:14:46 -08:00
alron 256436f68d Someone forgot to rev-bump when they released. :)
also, you are not org.bukkit.dynmap. you are org.dynmap.dynmap
2011-02-23 19:07:43 -08:00
FrozenCow 39db895b9d Fixed disable-webserver not being used (thanks for checking that Kilandor). 2011-02-24 00:58:40 +01:00
FrozenCow e6d2c4932a Reverted back to "== '13'" like flames suggested before. This seemed to raise incompatiblities for Firefox and Safari on Mac, not on Linux. 2011-02-24 00:38:46 +01:00
FrozenCow 00f55758c1 Changed version to 0.13. :D 2011-02-24 00:29:57 +01:00
FrozenCow ea64a55c04 Some dumb description changes in configuration. 2011-02-24 00:21:35 +01:00
FrozenCow fcbd76c591 Removed clock configuration. 2011-02-24 00:16:30 +01:00
FrozenCow 9a32485ca9 Small cleanup. 2011-02-24 00:16:10 +01:00
Jason Booth a1d7805116 Fix for NPE JsonTimerTask.java using wrong playerList
Removed unused PlayerList variable in MapManager.java
2011-02-23 17:07:04 -06:00
FrozenCow 20e954b905 Change for the inner nerd in me. 2011-02-24 00:06:36 +01:00
FrozenCow da4c456254 Merge remote-tracking branch 'flames/master' 2011-02-24 00:03:52 +01:00
Jason Booth bd51387c10 Merge branch 'master' of git://github.com/FrozenCow/dynmap 2011-02-23 17:03:10 -06:00
FrozenCow 95bf263f11 Merge remote-tracking branch 'kilandor/master' 2011-02-24 00:02:15 +01:00
Jason Booth 774e013558 Fix jsonfile-interval should be 1 not 1000 2011-02-23 16:31:57 -06:00
Arthur Mayer b6ec0a2955 lechd updated override example 2011-02-23 23:28:28 +01:00
Arthur Mayer cdd30d95c5 lechd's new override style to let the sidebar always open and hides
also the icon
2011-02-23 23:03:26 +01:00
Arthur Mayer cc0bb3b509 fixed chat sending messages from web.
event.keyCode === '13', where the strict equal operator seem to break
safari, firefox and chrome (different value types? keydown event seem
not to provide either a string nor an integer)
2011-02-23 21:26:51 +01:00
FrozenCow 1d2cce6caa Simplified tile-mechanism again (a bit like hMod's version). 2011-02-23 14:06:13 +01:00
FrozenCow b7f6a5a39d Applied style-change of lechd. 2011-02-23 12:40:05 +01:00
FrozenCow 1cc43637ee Merge remote-tracking branch 'kilandor/master' into nowebserver
Conflicts:
	configuration.txt
	src/main/java/org/dynmap/DynmapPlayerListener.java
	src/main/java/org/dynmap/DynmapPlugin.java
	web/map.js
2011-02-22 17:58:39 +01:00
FrozenCow da7da17235 Applied some suggestions by JSLint. 2011-02-22 15:38:49 +01:00
FrozenCow b99f487567 Replaced onPlayerCommand by onCommand (server-consoles can now also be used to execute commands). 2011-02-22 14:51:40 +01:00
FrozenCow ccf6f2ac49 Player per world support @ client. 2011-02-22 14:49:03 +01:00
FrozenCow ca76b29fb9 Made Dynmap package not include subdirectory. 2011-02-22 14:09:14 +01:00
FrozenCow 40c7c9fa66 It's official, ima retard. 2011-02-22 09:17:38 +01:00
FrozenCow fae5014b4e Added commands to plugin.yml, removed disabledcommands and added fullrender <worldname>. 2011-02-22 00:42:37 +01:00
FrozenCow 0fbd0c0a44 Added commands to plugin.yml. 2011-02-21 22:39:21 +01:00
FrozenCow 8d0f509bfe Made MapTypes per World (instead of having MapTypes for all worlds). 2011-02-21 22:17:38 +01:00
FrozenCow 65f3ea4fe3 Used new Bukkit constructor format. 2011-02-21 16:22:16 +01:00
FrozenCow b097fb8321 Added entry for css overrides and cleaned up styles by lechd. 2011-02-20 23:55:16 +01:00
FrozenCow feb6d65d82 Merge remote-tracking branch 'flames/master' 2011-02-20 22:13:41 +01:00
FrozenCow cd4027495c New buttons and example override css by lechd. 2011-02-20 22:11:28 +01:00
Arthur Mayer 298c0f3391 corrected (hopefully) the chat response for show/hide commands 2011-02-20 20:06:07 +01:00
Arthur Mayer e15514291b only OPs can use fullrender. added response to chat for
hide/show/fillrender commands.
2011-02-20 19:49:05 +01:00
FrozenCow f80385e1af Added lechd's new images. 2011-02-20 18:47:18 +01:00
FrozenCow 618d1b05c9 Merge branch 'master' of https://github.com/flames/dynmap 2011-02-20 17:46:27 +01:00
alron aaa06bfc38 Automagic packages built. Love me for this. :) 2011-02-19 21:49:24 -08:00
Arthur Mayer ad07d68d7e added configuration option messagettl, TimeToLive for chatmessages, in
Milliseconds! 15seconds: messagettl: 15000
2011-02-20 02:11:44 +01:00
Arthur Mayer 02fb226350 removed forgotten comma 2011-02-20 02:02:45 +01:00
Arthur Mayer d7fe6072a5 a lot of changes. chat and ui related. thanks FrozenCow & lechd 2011-02-20 01:58:53 +01:00
Jason Booth 6ab82174a5 Added timestamp support to Update Tiles and Chat.
New web config to handle for jsonfile method
Modified webclient to handle timestamps to prevent duplication.
Removed duplicate code in JsonTimerTask.java
2011-02-19 18:55:01 -06:00
FrozenCow 83f334445b Made chatinput reset after send. 2011-02-19 21:16:14 +01:00
FrozenCow d5bd6ff038 Made sendmessage url relative. 2011-02-19 21:08:14 +01:00
Arthur Mayer 22cc46f4b8 many ui iprovements by lechd 2011-02-19 20:51:21 +01:00
FrozenCow 77539522f0 Merge branch 'master' of https://github.com/flames/dynmap 2011-02-19 16:31:36 +01:00
FrozenCow 2bd0052aa9 Added WebChat back to web. 2011-02-19 16:31:13 +01:00
FrozenCow c53e6058be Added debugging to configuration. Disabled by default. 2011-02-19 15:25:31 +01:00
Arthur Mayer 9b604d4e75 Merge remote branch 'choose_remote_name/master' into HEAD 2011-02-19 08:28:03 +01:00
Arthur Mayer 9d490cbcc8 removed my custom url, made it relative 2011-02-19 08:26:40 +01:00
FrozenCow 791341f210 Fixed httpserver thereby also more optimized. 2011-02-19 00:01:42 +01:00
FrozenCow 42d07d6ca2 Added quotes to login/out messages for yaml. 2011-02-19 00:01:21 +01:00
Arthur Mayer 61c6f4a086 corrected the json string in sendChat() 2011-02-18 20:15:18 +01:00
FrozenCow 723e7da8d3 Added stacktrace for errors. 2011-02-18 19:43:45 +01:00
FrozenCow d3cf795ebb Fixed stupid mistake with body of http requests. 2011-02-18 19:42:32 +01:00
Arthur Mayer 67baf5100c forgotten config change for chat 2011-02-18 18:46:48 +01:00
Arthur Mayer 56f126d5f2 uups. removed debug alert, added function call 2011-02-18 11:15:05 +01:00
Arthur Mayer 10f93c02c1 added chatSend() function 2011-02-18 10:21:55 +01:00
Arthur Mayer 5ddaf940ed chat interface added, config option changed from showchatballoons:
ture/false to showchat: balloons/modal
2011-02-18 07:08:29 +01:00
Arthur Mayer 7c917b729e added join and quit messages to chat 2011-02-18 05:30:49 +01:00
Arthur Mayer 00485ddcc2 fixed small bug/typo where players were not removed from player list
at quit game.
2011-02-18 01:28:58 +01:00
Arthur Mayer 55aeb3c583 added custom configuration to nether rendering, changed pom.xml, so
maven compiles dynmap.jar instead of dynamic-map.jar
2011-02-18 01:23:14 +01:00
FrozenCow 1388fa11e5 Some desperate attempts to make IE8 work. 2011-02-18 00:07:59 +01:00
FrozenCow b860c7dd0e Added pinning. 2011-02-18 00:07:51 +01:00
FrozenCow c67b2e5cc2 Added example to configuration. 2011-02-17 21:17:54 +01:00
FrozenCow 44748d7f07 Changed gui by lechd + map per world client-configuration. 2011-02-17 20:08:50 +01:00
Jason Booth 13099587e0 Fixed mistake with map updates only pulling interval+10 instead of interval+10000 2011-02-17 11:14:37 -06:00
Jason Booth 3916c363ae Fixed jsontimer-interval config not being used.
Change JsonTimerTask.java to use jsontimer-interval+10 to allow a buffer for late/delayed client requests(to prevent updated tiles info to be missing)
2011-02-17 10:05:07 -06:00
Jason Booth 77d9a88868 Fixed timer to be stopped onDisabled if it was started 2011-02-17 09:45:32 -06:00
Jason Booth e1f2ca26d6 Changed disable-webserver and jsonfile to default false 2011-02-17 09:38:08 -06:00
Jason Booth 3c1bde1092 Updated JsonTimerTask.java to be Multi-World Compatible 2011-02-17 09:33:27 -06:00
Jason Booth f7dbc89ab4 Merge branch 'master' of git://github.com/FrozenCow/dynmap
Conflicts:
	configuration.txt
	src/main/java/org/dynmap/DynmapPlugin.java
2011-02-17 08:54:23 -06:00
FrozenCow 909207ac26 Organized imports. 2011-02-15 21:44:08 +01:00
FrozenCow 99605ba433 Make sure request-body is skipped if not read. 2011-02-15 21:06:14 +01:00
FrozenCow ada9637d72 Added sendmessage handler (for chatting back). 2011-02-15 21:00:36 +01:00
FrozenCow 2d693b1ebf Improved HTTP performance and POST/PUT compatbility. 2011-02-15 21:00:04 +01:00
FrozenCow e900aca2e0 Added helper classes for HTTP. 2011-02-15 14:19:43 +01:00
FrozenCow 060d1092f9 Made clock configurable and split clocks from map. 2011-02-15 13:50:04 +01:00
FrozenCow 38df91bafe Report world for players in updates. 2011-02-15 13:38:46 +01:00
FrozenCow 18ad2e1d79 Removed copyrights through flames' css. 2011-02-15 13:33:40 +01:00
FrozenCow 5fb098259a focuschatballoons now defaults to false. 2011-02-15 13:08:33 +01:00
Daniel Chesters 24c9dfed41 if focuschatballoons is at false, disableAutoPan should be at true 2011-02-14 21:53:07 +01:00
FrozenCow a1c86bfabb Removed depricated time-images. 2011-02-14 00:02:52 +01:00
FrozenCow 49d45c653d Made clock and timeofday interchangable. 2011-02-14 00:01:20 +01:00
FrozenCow 42391cc4d5 Readded getMinecraftTime. 2011-02-13 23:30:19 +01:00
FrozenCow 3980ebefa1 Revert "Removed Clock"
This reverts commit 9ca8f8dc64e9a28da81a538a3578c2b2a8b34c88.
2011-02-13 23:27:37 +01:00
lishid 058ab0eea7 Transparent compass now 2011-02-13 23:27:37 +01:00
lishid 6e8160e576 Removed Clock 2011-02-13 23:27:37 +01:00
lishid 51e7420bdb Dynamic Time of the day Added 2011-02-13 23:27:37 +01:00
lishid 60ea503053 Added/Modified images 2011-02-13 23:27:37 +01:00
lishid f894c4945b Added/Modified images 2011-02-13 23:27:37 +01:00
lishid 7241b2be81 Added compass and TimeOfDay 2011-02-13 23:27:37 +01:00
unknown b729f28df4 initial commit 2011-02-13 23:27:37 +01:00
FrozenCow 1fc2cdb636 Force making directories on tile-rendering (needs cleaner fix). 2011-02-13 23:23:15 +01:00
FrozenCow b63369675d Re-added flushing again (oops). 2011-02-13 23:22:57 +01:00
FrozenCow a81665d38d Fixed time being reported of the correct world. 2011-02-13 22:46:45 +01:00
FrozenCow db9ced3394 Fixed tiles not updating. 2011-02-13 22:42:08 +01:00
FrozenCow d5d737d385 Fixed 'unknown command' being shown after fullrender. 2011-02-13 22:34:38 +01:00
FrozenCow f3a1d53277 Added maximumheight to configuration for somewhat better nether rendering. 2011-02-13 22:33:33 +01:00
FrozenCow 9a2b9ccac0 Fixed HttpServer some more. 2011-02-13 22:30:24 +01:00
FrozenCow 835e566151 Some improvements to HttpServer. 2011-02-13 02:56:00 +01:00
FrozenCow 2380325975 Added automatically creating tiles directory. 2011-02-13 01:33:05 +01:00
FrozenCow 100f3e0590 Added multiworld update support along with client-side support. 2011-02-13 01:19:47 +01:00
FrozenCow 5b0171c459 Server-side multiworld support with several improvements overal. 2011-02-12 23:47:00 +01:00
FrozenCow 2fd91ef94b Changed tilepath to tilespath in configuration. 2011-02-11 06:28:17 -08:00
FrozenCow 403a2acc53 Added default player-faces. 2011-02-10 01:20:50 +01:00
Jason Booth 959040e5f4 Merge branch 'master' of git://github.com/FrozenCow/dynmap 2011-02-09 14:24:13 -06:00
Jason Booth 2f6930bc17 Removed System debug messages.
Added missing JsonTimerTask.java
2011-02-09 11:57:46 -06:00
Jason Booth fb01f6ecf7 New config to Disable Webserver
New feature and config to output JSON to file
2011-02-09 11:35:09 -06:00
FrozenCow 29517e9a24 Fixed handling invalid http requests. 2011-02-09 17:22:16 +01:00
FrozenCow d566fccb1e Fixed rendering zoomedout tiles. 2011-02-09 13:25:06 +01:00
FrozenCow b2f6ae5132 Disabled fullrender by default. 2011-02-09 01:03:31 +01:00
FrozenCow 5c209c2a5e Renamed y to z in DynmapChunk. 2011-02-09 00:42:16 +01:00
FrozenCow fb1b5df3d0 Made zoomed-rendering make use of existing tile-files instead of keeping those tiles in memory. 2011-02-08 23:38:57 +01:00
FrozenCow 38ee8657e8 Better exception handling. 2011-02-08 20:59:51 +01:00
FrozenCow 89c8d564a4 Made use of newly introduced unloadChunk in BukkitAPI + removal of unstable features. 2011-02-08 20:27:37 +01:00
FrozenCow b31bb14452 disabledcommands can now be empty. 2011-02-07 22:26:55 +01:00
FrozenCow 553eb7952d Added ability to disable commands in configuration. 2011-02-07 17:25:16 +01:00
FrozenCow 421b91058a Merge https://github.com/kosiini/dynmap 2011-02-07 17:01:39 +01:00
Janne Sinisalo 100a03274c Compile fix for multiworld
Updated getWorlds()[0] to getWorlds().get(0)
2011-02-07 17:42:11 +02:00
FrozenCow d2b7169884 Workaround for IE's retardness (not yet tested). 2011-02-06 15:09:15 +01:00
FrozenCow 3e398e9124 Made updates in JSON format. Combined chat and tile queues into one UpdateQueue. Fixed UpdateQueue. 2011-02-06 03:00:51 +01:00
FrozenCow 7c257af454 Fixed Json stringify. 2011-02-06 02:00:27 +01:00
FrozenCow a937d13086 Added reflection-support for stringifyJson. 2011-02-05 21:09:49 +01:00
FrozenCow d651d58d63 Moved stringifyJson to Json class. 2011-02-05 21:02:39 +01:00
FrozenCow 9a655676ab Moved FileHandler to handlers package. 2011-02-05 20:54:28 +01:00
FrozenCow debf5bcc57 Renamed WebServer to HttpServer and WebServerRequest to HttpServerConnection. 2011-02-05 20:53:42 +01:00
FrozenCow 2a79aea7bb Moved handlers to their own (independent) classes. 2011-02-05 20:51:20 +01:00
FrozenCow 883eba6890 Removed debugging + small fix. 2011-02-05 19:57:32 +01:00
FrozenCow 226cc5f86c More work on HttpServer. 2011-02-05 19:51:48 +01:00
FrozenCow bf0edea7e2 Initial http-server work. 2011-02-05 19:51:48 +01:00
FrozenCow 711341ec47 Oops, forgot comma. 2011-02-05 19:51:06 +01:00
FrozenCow 14a3d32205 Used colors.txt from lechd. 2011-02-05 17:49:11 +01:00
FrozenCow 9f555bd4bb Added 'loadChunks' to configuration. 2011-02-05 03:03:52 +01:00
FrozenCow 902cc87458 Added 'focuschatballoons' to config influenced by Incendia's suggestion. 2011-02-05 02:59:03 +01:00
FrozenCow 9951baf8b5 Made tiles use nearest-neighbor filtering in Firefox and IE as suggested by lechd. 2011-02-05 02:54:06 +01:00
FrozenCow 335109d8c7 Added pumpkin colors as suggested by lechd. 2011-02-05 02:53:22 +01:00
FrozenCow 3940b91d0e Applied Eclipse formatting. 2011-02-05 02:25:18 +01:00
FrozenCow 4f138a56da Removed comments. 2011-02-05 02:11:49 +01:00
FrozenCow c8cf39a440 Added unstable fullmap rendering. Also... messed up formatting by pressing ctrl+shift+f in eclipse, sigh 2011-02-05 02:01:04 +01:00
FrozenCow 138aed8c33 Added chunk loading to rendering. 2011-02-04 23:12:55 +01:00
FrozenCow fde56275fe Changed day/night time as suggested by lologarithm. 2011-02-02 11:58:14 +01:00
FrozenCow 13e829cda0 Updated Server.getTime to World.getTime (to reflect Bukkit's changes) 2011-02-02 11:40:49 +01:00
150 changed files with 7184 additions and 3103 deletions
@@ -1,106 +1,191 @@
1 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
2 117 176 73 255 93 140 58 255 58 88 36 255 46 70 29 255
3 134 96 67 255 107 76 53 255 67 48 33 255 53 38 26 255
4 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
48 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
5 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
6 120 120 120 0 96 96 96 0 60 60 60 0 48 48 48 0
7 84 84 84 255 67 67 67 255 42 42 42 255 33 33 33 255
8 38 92 255 51 30 73 204 51 19 46 127 51 15 36 102 51
9 38 92 255 51 30 73 204 51 19 46 127 51 15 36 102 51
10 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
11 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
12 218 210 158 255 174 168 126 255 109 105 79 255 87 84 63 255
13 136 126 126 255 108 100 100 255 68 63 63 255 54 50 50 255
14 143 140 125 255 114 112 100 255 71 70 62 255 57 56 50 255
15 136 130 127 255 108 104 101 255 68 65 63 255 54 52 50 255
16 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
17 102 81 51 255 81 64 40 255 51 40 25 255 40 32 20 255
18 60 192 41 100 48 153 32 100 30 96 20 100 24 76 16 100
20 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
Lapis Lazuli Ore
21 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
Lapis Lazuli Block
22 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
Dispenser
23 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
Sandstone
24 218 210 158 255 174 168 126 255 109 105 79 255 87 84 63 255
Note Block
25 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
Aqua Green Cloth
26 43 192 117 255 38 168 101 255 34 150 90 255 29 130 78 255
Cyan Cloth
27 43 192 192 255 36 185 185 255 29 130 130 255 22 99 99 255
Blue Cloth
28 0 0 255 255 0 0 204 255 0 0 127 255 0 0 102 255
Purple Cloth
29 101 101 188 255 95 95 175 255 86 86 160 255 78 78 145 255
Indigo Cloth
30 113 41 186 255 99 38 165 255 85 32 142 255 72 27 119 255
Violet Cloth
31 156 65 198 255 132 55 168 255 112 47 142 255 84 35 107 255
Magenta Cloth
32 187 42 187 255 160 36 160 255 135 31 135 255 112 25 112 255
Pink Cloth
33 192 43 117 255 168 38 103 255 142 32 87 255 127 29 78 255
Black Cloth
34 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255
Wool
35 222 222 222 255 177 177 177 255 111 111 111 255 88 88 88 255
Gray Cloth
36 125 125 125 255 114 114 114 255 104 104 104 255 86 86 86 255
37 255 255 0 255 204 204 0 255 127 127 0 255 102 102 0 255
38 255 0 0 255 204 0 0 255 127 0 0 255 102 0 0 255
41 232 245 46 255 185 196 36 255 116 122 23 255 92 98 18 255
42 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
43 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
44 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
45 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
46 160 83 65 255 128 66 52 255 80 41 32 255 64 33 26 255
49 26 11 43 255 20 8 34 255 13 5 21 255 10 4 17 255
51 255 170 30 200 204 136 24 200 127 85 15 200 102 68 12 200
53 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
54 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
56 129 140 143 255 103 112 114 255 64 70 71 255 51 56 57 255
57 45 166 152 255 36 132 121 255 22 83 76 255 18 66 60 255
58 114 88 56 255 91 70 44 255 57 44 28 255 45 35 22 255
59 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
60 95 58 30 255 76 46 24 255 47 29 15 255 38 23 12 255
61 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
62 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
63 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
64 136 109 67 255 108 87 53 255 68 54 33 255 54 43 26 255
65 181 140 64 32 144 112 51 32 90 70 32 32 72 56 25 32
66 150 134 102 180 120 107 81 180 75 67 51 180 60 53 40 180
67 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
71 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
73 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
74 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
78 255 255 255 255 204 204 204 255 127 127 127 255 102 102 102 255
79 83 113 163 51 66 90 130 51 41 56 81 51 33 45 65 51
80 250 250 250 255 200 200 200 255 125 125 125 255 100 100 100 255
81 25 120 25 255 20 96 20 255 12 60 12 255 10 48 10 255
82 151 157 169 255 120 125 135 255 75 78 84 255 60 62 67 255
83 193 234 150 255 154 187 120 255 96 117 75 255 77 93 60 255
redstone torch off
75 159 127 80 255 72 56 25 0 181 140 64 255 144 112 51 0
redstone torch on
76 159 127 80 255 102 0 0 0 255 0 0 255 204 0 0 0
torch
50 159 127 80 255 98 88 20 0 245 220 50 255 196 176 40 0
jukebox
84 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
fence
85 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
netherstone
87 166 89 89 255 141 80 62 255 135 15 15 255 96 6 6 255
slowsand
88 133 109 94 255 121 97 82 255 90 70 57 255 79 59 46 255
lightstone
89 249 212 156 255 255 188 94 255 192 143 70 255 122 91 44 255
portal
90 99 66 222 128 99 66 222 128 99 66 222 128 99 66 222 128
Cake Block
92 234 234 234 255 210 210 210 255 203 203 203 255 190 190 190 255
Stone
1 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
Grass
2 117 176 73 255 93 140 58 255 58 88 36 255 46 70 29 255
Dirt
3 134 96 67 255 107 76 53 255 67 48 33 255 53 38 26 255
Cobblestone
4 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Wooden Plank
5 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
Sappling
6 120 120 120 0 96 96 96 0 60 60 60 0 48 48 48 0
Bedrock
7 84 84 84 255 67 67 67 255 42 42 42 255 33 33 33 255
Water
8 38 92 255 51 30 73 204 51 19 46 127 51 15 36 102 51
Stationary Water
9 38 92 255 51 30 73 204 51 19 46 127 51 15 36 102 51
Lava
10 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
Stationary Lava
11 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
Sand
12 218 210 158 255 174 168 126 255 109 105 79 255 87 84 63 255
Gravel
13 136 126 126 255 108 100 100 255 68 63 63 255 54 50 50 255
Gold Ore
14 143 140 125 255 114 112 100 255 71 70 62 255 57 56 50 255
Iron Ore
15 136 130 127 255 108 104 101 255 68 65 63 255 54 52 50 255
Coal Ore
16 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Wood
17 102 81 51 255 81 64 40 255 51 40 25 255 40 32 20 255
Leaves
18 60 192 41 100 48 153 32 100 30 96 20 100 24 76 16 100
Sponge
19 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
Glass
20 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
Lapis Lazuli Ore
21 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
Lapis Lazuli Block
22 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
Dispenser
23 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
Sandstone
24 218 210 158 255 174 168 126 255 109 105 79 255 87 84 63 255
Note Block
25 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
Aqua Green Cloth
26 43 192 117 255 38 168 101 255 34 150 90 255 29 130 78 255
Cyan Cloth
27 43 192 192 255 36 185 185 255 29 130 130 255 22 99 99 255
Blue Cloth
28 0 0 255 255 0 0 204 255 0 0 127 255 0 0 102 255
Purple Cloth
29 101 101 188 255 95 95 175 255 86 86 160 255 78 78 145 255
Indigo Cloth
30 113 41 186 255 99 38 165 255 85 32 142 255 72 27 119 255
Violet Cloth
31 156 65 198 255 132 55 168 255 112 47 142 255 84 35 107 255
Magenta Cloth
32 187 42 187 255 160 36 160 255 135 31 135 255 112 25 112 255
Pink Cloth
33 192 43 117 255 168 38 103 255 142 32 87 255 127 29 78 255
Black Cloth
34 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255
Wool
35 222 222 222 255 177 177 177 255 111 111 111 255 88 88 88 255
35:0 222 222 222 255 177 177 177 255 111 111 111 255 88 88 88 255
35:1 204 111 48 255 162 89 38 255 102 56 24 255 81 44 19 255
35:2 166 66 175 255 133 53 140 255 83 33 87 255 66 26 69 255
35:3 91 121 185 255 73 96 147 255 46 61 92 255 36 48 73 255
35:4 170 158 24 255 135 126 19 255 85 79 12 255 67 62 10 255
35:5 51 165 42 255 41 131 33 255 26 82 21 255 20 65 17 255
35:6 190 115 135 255 151 92 108 255 95 57 67 255 75 46 53 255
35:7 58 58 58 255 47 47 47 255 29 29 29 255 23 23 23 255
35:8 138 145 145 255 110 115 115 255 69 72 72 255 55 57 57 255
35:9 34 102 131 255 27 81 104 255 17 51 65 255 13 40 52 255
35:10 113 47 171 255 90 37 136 255 57 24 85 255 45 19 68 255
35:11 34 44 134 255 27 35 107 255 17 22 67 255 13 18 53 255
35:12 75 44 24 255 60 35 19 255 37 22 12 255 30 18 10 255
35:13 49 67 21 255 39 53 17 255 24 34 10 255 19 27 8 255
35:14 143 39 36 255 114 31 28 255 71 20 18 255 57 16 14 255
35:15 24 20 20 255 19 16 16 255 12 10 10 255 9 8 8 255
Gray Cloth
36 125 125 125 255 114 114 114 255 104 104 104 255 86 86 86 255
Yellow Flower
37 255 255 0 255 204 204 0 255 127 127 0 255 102 102 0 255
Red Rose
38 255 0 0 255 204 0 0 255 127 0 0 255 102 0 0 255
Brown Mushroom
39 204 153 120 32 145 109 85 32 114 86 67 32 73 64 58 32
Red Mushroom
40 255 43 43 32 196 29 38 32 186 105 109 32 124 64 64 32
Gold Block
41 232 245 46 255 185 196 36 255 116 122 23 255 92 98 18 255
Iron Block
42 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
Double Stone Slab
43 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
Stone Slab
44 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
Brick
45 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
TNT
46 160 83 65 255 128 66 52 255 80 41 32 255 64 33 26 255
Bookshelf
54 125 91 38 192 100 72 30 192 62 45 19 192 50 36 15 192
Moss Stone
48 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Obsidian
49 26 11 43 255 20 8 34 255 13 5 21 255 10 4 17 255
Torch
50 159 127 80 255 98 88 20 0 245 220 50 255 196 176 40 0
Fire
51 255 170 30 200 204 136 24 200 127 85 15 200 102 68 12 200
Monster Spawner
52 0 150 110 196 0 150 130 196 0 150 110 196 0 150 130 196
Wooden Stair
53 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
Chest
54 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
Diamond Ore
56 129 140 143 255 103 112 114 255 64 70 71 255 51 56 57 255
Diamond Block
57 45 166 152 255 36 132 121 255 22 83 76 255 18 66 60 255
Workbench
58 114 88 56 255 91 70 44 255 57 44 28 255 45 35 22 255
Crops
59 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
Farmland
60 95 58 30 255 76 46 24 255 47 29 15 255 38 23 12 255
Furnace
61 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
Burning Furnace
62 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
Sign Post
63 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
Wooden Door
64 136 109 67 255 108 87 53 255 68 54 33 255 54 43 26 255
Ladder
65 181 140 64 32 144 112 51 32 90 70 32 32 72 56 25 32
Minecart Tracks
66 150 134 102 180 120 107 81 180 75 67 51 180 60 53 40 180
Cobblestone Stairs
67 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Iron Door
71 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
Redstone Ore
73 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
Glowing Redstone Ore
74 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
Redstone Torch off
75 159 127 80 255 72 56 25 0 181 140 64 255 144 112 51 0
Redstone Torch on
76 159 127 80 255 102 0 0 0 255 0 0 255 204 0 0 0
Snow
78 255 255 255 255 204 204 204 255 127 127 127 255 102 102 102 255
Ice
79 83 113 163 51 66 90 130 51 41 56 81 51 33 45 65 51
Snow Block
80 250 250 250 255 200 200 200 255 125 125 125 255 100 100 100 255
Cactus
81 25 120 25 255 20 96 20 255 12 60 12 255 10 48 10 255
Clay
82 151 157 169 255 120 125 135 255 75 78 84 255 60 62 67 255
Sugar Cane
83 193 234 150 255 154 187 120 255 96 117 75 255 77 93 60 255
Jukebox
84 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
Fence
85 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
Pumpkin
86 255 115 0 200 204 92 0 200 126 57 0 200 102 46 0 200
Netherrack
87 166 89 89 255 141 80 62 255 135 15 15 255 96 6 6 255
Soulsand
88 133 109 94 255 121 97 82 255 90 70 57 255 79 59 46 255
Glowstone
89 249 212 156 255 255 188 94 255 192 143 70 255 122 91 44 255
Portal
90 140 0 196 128 120 0 196 128 140 0 196 128 120 0 196 128
Jack-o-lantern
91 255 115 0 255 204 92 0 255 126 57 0 255 102 46 0 255
Cake Block
92 234 234 234 255 210 210 210 255 203 203 203 255 190 190 190 255
+191
View File
@@ -0,0 +1,191 @@
Stone
1 120 120 120 255 96 96 96 255 60 60 60 255 48 48 48 255
Grass
2 60 113 17 255 50 94 14 255 42 79 12 255 50 94 14 255
Dirt
3 134 96 67 255 107 76 53 255 67 48 33 255 53 38 26 255
Cobblestone
4 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Wooden Plank
5 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
Sappling
6 120 120 120 0 96 96 96 0 60 60 60 0 48 48 48 0
Bedrock
7 84 84 84 255 67 67 67 255 42 42 42 255 33 33 33 255
Water
8 38 92 255 51 30 73 204 51 19 46 127 51 15 36 102 51
Stationary Water
9 38 92 255 51 30 73 204 51 19 46 127 51 15 36 102 51
Lava
10 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
Stationary Lava
11 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
Sand
12 218 210 158 255 174 168 126 255 109 105 79 255 87 84 63 255
Gravel
13 136 126 126 255 108 100 100 255 68 63 63 255 54 50 50 255
Gold Ore
14 143 140 125 255 114 112 100 255 71 70 62 255 57 56 50 255
Iron Ore
15 136 130 127 255 108 104 101 255 68 65 63 255 54 52 50 255
Coal Ore
16 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Wood
17 102 81 51 255 81 64 40 255 51 40 25 255 40 32 20 255
Leaves
18 27 69 37 180 22 57 31 180 19 48 25 180 22 57 31 180
Sponge
19 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
Glass
20 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
Lapis Lazuli Ore
21 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
Lapis Lazuli Block
22 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
Dispenser
23 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
Sandstone
24 192 178 110 255 160 148 92 255 134 124 77 255 160 148 92 255
Note Block
25 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
Aqua Green Cloth
26 43 192 117 255 38 168 101 255 34 150 90 255 29 130 78 255
Cyan Cloth
27 43 192 192 255 36 185 185 255 29 130 130 255 22 99 99 255
Blue Cloth
28 0 0 255 255 0 0 204 255 0 0 127 255 0 0 102 255
Purple Cloth
29 101 101 188 255 95 95 175 255 86 86 160 255 78 78 145 255
Indigo Cloth
30 113 41 186 255 99 38 165 255 85 32 142 255 72 27 119 255
Violet Cloth
31 156 65 198 255 132 55 168 255 112 47 142 255 84 35 107 255
Magenta Cloth
32 187 42 187 255 160 36 160 255 135 31 135 255 112 25 112 255
Pink Cloth
33 192 43 117 255 168 38 103 255 142 32 87 255 127 29 78 255
Black Cloth
34 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255
Wool
35 247 255 239 255 244 251 236 255 204 210 197 255 244 251 236 255
35:0 247 255 239 255 244 251 236 255 204 210 197 255 244 251 236 255
35:1 227 128 52 255 224 126 51 255 187 105 42 255 224 126 51 255
35:2 185 76 188 255 183 75 186 255 153 63 155 255 183 75 186 255
35:3 102 139 199 255 100 137 196 255 84 114 164 255 100 137 196 255
35:4 189 181 26 255 187 178 26 255 156 149 22 255 187 178 26 255
35:5 57 189 45 255 56 186 44 255 47 156 37 255 56 186 44 255
35:6 211 132 145 255 209 130 143 255 174 109 120 255 209 130 143 255
35:7 65 67 63 255 64 66 62 255 54 55 52 255 64 66 62 255
35:8 154 166 156 255 152 163 154 255 127 137 128 255 152 163 154 255
35:9 38 117 141 255 37 115 139 255 31 96 116 255 37 115 139 255
35:10 126 54 184 255 124 53 181 255 104 44 151 255 124 53 181 255
35:11 38 51 144 255 37 50 143 255 31 42 119 255 37 50 143 255
35:12 83 51 26 255 82 50 26 255 69 42 22 255 82 50 26 255
35:13 54 77 22 255 54 76 22 255 45 63 19 255 54 76 22 255
35:14 159 45 38 255 157 44 38 255 131 37 32 255 157 44 38 255
35:15 26 23 22 255 26 23 21 255 22 19 18 255 26 23 21 255
Gray Cloth
36 125 125 125 255 114 114 114 255 104 104 104 255 86 86 86 255
Yellow Flower
37 255 255 0 255 204 204 0 255 127 127 0 255 102 102 0 255
Red Rose
38 255 0 0 255 204 0 0 255 127 0 0 255 102 0 0 255
Brown Mushroom
39 204 153 120 32 145 109 85 32 114 86 67 32 73 64 58 32
Red Mushroom
40 255 43 43 32 196 29 38 32 186 105 109 32 124 64 64 32
Gold Block
41 232 245 46 255 185 196 36 255 116 122 23 255 92 98 18 255
Iron Block
42 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
Double Stone Slab
43 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
Stone Slab
44 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
Brick
45 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
TNT
46 160 83 65 255 128 66 52 255 80 41 32 255 64 33 26 255
Bookshelf
54 125 91 38 192 100 72 30 192 62 45 19 192 50 36 15 192
Moss Stone
48 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Obsidian
49 26 11 43 255 20 8 34 255 13 5 21 255 10 4 17 255
Torch
50 159 127 80 255 98 88 20 0 245 220 50 255 196 176 40 0
Fire
51 255 170 30 200 204 136 24 200 127 85 15 200 102 68 12 200
Monster Spawner
52 0 150 110 196 0 150 130 196 0 150 110 196 0 150 130 196
Wooden Stair
53 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
Chest
54 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
Diamond Ore
56 129 140 143 255 103 112 114 255 64 70 71 255 51 56 57 255
Diamond Block
57 45 166 152 255 36 132 121 255 22 83 76 255 18 66 60 255
Workbench
58 114 88 56 255 91 70 44 255 57 44 28 255 45 35 22 255
Crops
59 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
Farmland
60 95 58 30 255 76 46 24 255 47 29 15 255 38 23 12 255
Furnace
61 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
Burning Furnace
62 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
Sign Post
63 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
Wooden Door
64 136 109 67 255 108 87 53 255 68 54 33 255 54 43 26 255
Ladder
65 181 140 64 32 144 112 51 32 90 70 32 32 72 56 25 32
Minecart Tracks
66 150 134 102 180 120 107 81 180 75 67 51 180 60 53 40 180
Cobblestone Stairs
67 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Iron Door
71 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
Redstone Ore
73 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
Glowing Redstone Ore
74 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
Redstone Torch off
75 159 127 80 255 72 56 25 0 181 140 64 255 144 112 51 0
Redstone Torch on
76 159 127 80 255 102 0 0 0 255 0 0 255 204 0 0 0
Snow
78 255 255 255 255 204 204 204 255 127 127 127 255 102 102 102 255
Ice
79 83 113 163 51 66 90 130 51 41 56 81 51 33 45 65 51
Snow Block
80 250 250 250 255 200 200 200 255 125 125 125 255 100 100 100 255
Cactus
81 25 120 25 255 20 96 20 255 12 60 12 255 10 48 10 255
Clay
82 151 157 169 255 120 125 135 255 75 78 84 255 60 62 67 255
Sugar Cane
83 193 234 150 255 154 187 120 255 96 117 75 255 77 93 60 255
Jukebox
84 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
Fence
85 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
Pumpkin
86 255 115 0 200 204 92 0 200 126 57 0 200 102 46 0 200
Netherrack
87 166 89 89 255 141 80 62 255 135 15 15 255 96 6 6 255
Soulsand
88 133 109 94 255 121 97 82 255 90 70 57 255 79 59 46 255
Glowstone
89 249 212 156 255 255 188 94 255 192 143 70 255 122 91 44 255
Portal
90 140 0 196 128 120 0 196 128 140 0 196 128 120 0 196 128
Jack-o-lantern
91 255 115 0 255 204 92 0 255 126 57 0 255 102 46 0 255
Cake Block
92 234 234 234 255 210 210 210 255 203 203 203 255 190 190 190 255
+191
View File
@@ -0,0 +1,191 @@
Stone
1 119 104 84 255 104 95 80 255 96 87 72 255 77 68 53 255
Grass
2 75 156 43 255 56 117 32 255 35 104 10 255 32 82 0 255
Dirt
3 134 96 67 255 107 76 53 255 67 48 33 255 68 49 33 255
Cobblestone
4 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Wooden Plank
5 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
Sappling
6 120 120 120 0 96 96 96 0 60 60 60 0 48 48 48 0
Bedrock
7 84 84 84 255 67 67 67 255 42 42 42 255 33 33 33 255
Water
8 21 88 125 80 7 70 117 80 6 68 115 80 5 53 90 80
Stationary Water
9 21 88 125 80 7 70 117 80 6 68 115 80 5 53 90 80
Lava
10 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
Stationary Lava
11 255 90 0 255 204 72 0 255 127 45 0 255 102 36 0 255
Sand
12 214 182 111 255 203 171 100 255 186 154 83 255 173 141 70 255
Gravel
13 136 126 126 255 108 100 100 255 68 63 63 255 54 50 50 255
Gold Ore
14 143 140 125 255 114 112 100 255 71 70 62 255 57 56 50 255
Iron Ore
15 136 130 127 255 108 104 101 255 68 65 63 255 54 52 50 255
Coal Ore
16 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Wood
17 102 81 51 255 81 64 40 255 51 40 25 255 40 32 20 255
Leaves
18 23 68 6 100 12 56 0 100 6 52 0 100 0 42 0 100
Sponge
19 193 193 65 255 174 174 47 255 97 97 5 255 76 76 20 255
Glass
20 255 255 255 64 204 204 204 64 127 127 127 64 102 102 102 64
Lapis Lazuli Ore
21 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
Lapis Lazuli Block
22 23 68 196 255 18 56 158 255 14 43 122 255 14 43 78 255
Dispenser
23 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
Sandstone
24 214 182 111 255 203 171 100 255 186 154 83 255 173 141 70 255
Note Block
25 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
Aqua Green Cloth
26 43 192 117 255 38 168 101 255 34 150 90 255 29 130 78 255
Cyan Cloth
27 43 192 192 255 36 185 185 255 29 130 130 255 22 99 99 255
Blue Cloth
28 0 0 255 255 0 0 204 255 0 0 127 255 0 0 102 255
Purple Cloth
29 101 101 188 255 95 95 175 255 86 86 160 255 78 78 145 255
Indigo Cloth
30 113 41 186 255 99 38 165 255 85 32 142 255 72 27 119 255
Violet Cloth
31 156 65 198 255 132 55 168 255 112 47 142 255 84 35 107 255
Magenta Cloth
32 187 42 187 255 160 36 160 255 135 31 135 255 112 25 112 255
Pink Cloth
33 192 43 117 255 168 38 103 255 142 32 87 255 127 29 78 255
Black Cloth
34 0 0 0 255 0 0 0 255 0 0 0 255 0 0 0 255
Wool
35 222 222 222 255 177 177 177 255 111 111 111 255 88 88 88 255
35:0 222 222 222 255 177 177 177 255 111 111 111 255 88 88 88 255
35:1 204 111 48 255 162 89 38 255 102 56 24 255 81 44 19 255
35:2 166 66 175 255 133 53 140 255 83 33 87 255 66 26 69 255
35:3 91 121 185 255 73 96 147 255 46 61 92 255 36 48 73 255
35:4 170 158 24 255 135 126 19 255 85 79 12 255 67 62 10 255
35:5 51 165 42 255 41 131 33 255 26 82 21 255 20 65 17 255
35:6 190 115 135 255 151 92 108 255 95 57 67 255 75 46 53 255
35:7 58 58 58 255 47 47 47 255 29 29 29 255 23 23 23 255
35:8 138 145 145 255 110 115 115 255 69 72 72 255 55 57 57 255
35:9 34 102 131 255 27 81 104 255 17 51 65 255 13 40 52 255
35:10 113 47 171 255 90 37 136 255 57 24 85 255 45 19 68 255
35:11 34 44 134 255 27 35 107 255 17 22 67 255 13 18 53 255
35:12 75 44 24 255 60 35 19 255 37 22 12 255 30 18 10 255
35:13 49 67 21 255 39 53 17 255 24 34 10 255 19 27 8 255
35:14 143 39 36 255 114 31 28 255 71 20 18 255 57 16 14 255
35:15 24 20 20 255 19 16 16 255 12 10 10 255 9 8 8 255
Gray Cloth
36 125 125 125 255 114 114 114 255 104 104 104 255 86 86 86 255
Yellow Flower
37 255 255 0 255 204 204 0 255 127 127 0 255 102 102 0 255
Red Rose
38 255 0 0 255 204 0 0 255 127 0 0 255 102 0 0 255
Brown Mushroom
39 204 153 120 32 145 109 85 32 114 86 67 32 73 64 58 32
Red Mushroom
40 255 43 43 32 196 29 38 32 186 105 109 32 124 64 64 32
Gold Block
41 232 245 46 255 185 196 36 255 116 122 23 255 92 98 18 255
Iron Block
42 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
Double Stone Slab
43 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
Stone Slab
44 200 200 200 255 160 160 160 255 100 100 100 255 80 80 80 255
Brick
45 170 86 62 255 136 68 49 255 85 43 31 255 68 34 24 255
TNT
46 160 83 65 255 128 66 52 255 80 41 32 255 64 33 26 255
Bookshelf
54 125 91 38 192 100 72 30 192 62 45 19 192 50 36 15 192
Moss Stone
48 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Obsidian
49 26 11 43 255 20 8 34 255 13 5 21 255 10 4 17 255
Torch
50 159 127 80 255 98 88 20 0 245 220 50 255 196 176 40 0
Fire
51 255 170 30 200 204 136 24 200 127 85 15 200 102 68 12 200
Monster Spawner
52 0 150 110 196 0 150 130 196 0 150 110 196 0 150 130 196
Wooden Stair
53 157 128 79 255 125 102 63 255 78 64 39 255 62 51 31 255
Chest
54 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
Diamond Ore
56 129 140 143 255 103 112 114 255 64 70 71 255 51 56 57 255
Diamond Block
57 45 166 152 255 36 132 121 255 22 83 76 255 18 66 60 255
Workbench
58 114 88 56 255 91 70 44 255 57 44 28 255 45 35 22 255
Crops
59 146 192 0 255 116 153 0 255 73 96 0 255 58 76 0 255
Farmland
60 95 58 30 255 76 46 24 255 47 29 15 255 38 23 12 255
Furnace
61 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
Burning Furnace
62 96 96 96 255 76 76 76 255 48 48 48 255 38 38 38 255
Sign Post
63 111 91 54 255 88 72 43 255 55 45 27 255 44 36 21 255
Wooden Door
64 136 109 67 255 108 87 53 255 68 54 33 255 54 43 26 255
Ladder
65 181 140 64 32 144 112 51 32 90 70 32 32 72 56 25 32
Minecart Tracks
66 150 134 102 180 120 107 81 180 75 67 51 180 60 53 40 180
Cobblestone Stairs
67 115 115 115 255 92 92 92 255 57 57 57 255 46 46 46 255
Iron Door
71 191 191 191 255 152 152 152 255 95 95 95 255 76 76 76 255
Redstone Ore
73 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
Glowing Redstone Ore
74 131 107 107 255 104 85 85 255 65 53 53 255 52 42 42 255
Redstone Torch off
75 159 127 80 255 72 56 25 0 181 140 64 255 144 112 51 0
Redstone Torch on
76 159 127 80 255 102 0 0 0 255 0 0 255 204 0 0 0
Snow
78 255 255 255 255 204 204 204 255 127 127 127 255 102 102 102 255
Ice
79 83 113 163 51 66 90 130 51 41 56 81 51 33 45 65 51
Snow Block
80 250 250 250 255 200 200 200 255 125 125 125 255 100 100 100 255
Cactus
81 25 120 25 255 20 96 20 255 12 60 12 255 10 48 10 255
Clay
82 151 157 169 255 120 125 135 255 75 78 84 255 60 62 67 255
Sugar Cane
83 193 234 150 255 154 187 120 255 96 117 75 255 77 93 60 255
Jukebox
84 125 91 38 255 100 72 30 255 62 45 19 255 50 36 15 255
Fence
85 127 98 49 96 95 72 33 96 48 34 9 96 32 21 21 96
Pumpkin
86 255 115 0 200 204 92 0 200 126 57 0 200 102 46 0 200
Netherrack
87 166 89 89 255 141 80 62 255 135 15 15 255 96 6 6 255
Soulsand
88 133 109 94 255 121 97 82 255 90 70 57 255 79 59 46 255
Glowstone
89 249 212 156 255 255 188 94 255 192 143 70 255 122 91 44 255
Portal
90 140 0 196 128 120 0 196 128 140 0 196 128 120 0 196 128
Jack-o-lantern
91 255 115 0 255 204 92 0 255 126 57 0 255 102 46 0 255
Cake Block
92 234 234 234 255 210 210 210 255 203 203 203 255 190 190 190 255
+79
View File
@@ -0,0 +1,79 @@
1 133 129 118 255 111 108 98 255 93 90 82 255 111 108 98 255
2 60 113 17 255 50 94 14 255 42 79 12 255 50 94 14 255
3 103 83 51 255 86 69 43 255 72 58 36 255 86 69 43 255
4 118 112 96 255 98 93 80 255 82 78 67 255 98 93 80 255
5 109 80 60 255 91 67 50 255 76 56 41 255 91 67 50 255
7 79 79 82 255 66 66 68 255 55 55 57 255 66 66 68 255
8 94 170 255 51 82 148 223 51 69 124 186 51 82 148 223 51
9 94 170 255 51 82 148 223 51 69 124 186 51 82 148 223 51
10 255 164 41 255 255 164 41 255 212 137 34 255 255 164 41 255
11 255 164 41 255 255 164 41 255 212 137 34 255 255 164 41 255
12 192 178 110 255 160 148 92 255 134 124 77 255 160 148 92 255
13 120 105 79 255 100 87 66 255 84 73 55 255 100 87 66 255
14 255 181 38 255 255 181 38 255 212 151 31 255 255 181 38 255
15 231 174 113 255 193 145 94 255 161 121 79 255 193 145 94 255
16 56 60 70 255 46 50 58 255 39 42 49 255 46 50 58 255
17 119 97 74 255 99 81 62 255 83 68 52 255 99 81 62 255
18 27 69 37 180 22 57 31 180 19 48 25 180 22 57 31 180
20 178 217 223 90 148 181 186 90 124 151 155 90 148 181 186 90
35 247 255 239 255 244 251 236 255 204 210 197 255 244 251 236 255
35:0 247 255 239 255 244 251 236 255 204 210 197 255 244 251 236 255
35:1 227 128 52 255 224 126 51 255 187 105 42 255 224 126 51 255
35:2 185 76 188 255 183 75 186 255 153 63 155 255 183 75 186 255
35:3 102 139 199 255 100 137 196 255 84 114 164 255 100 137 196 255
35:4 189 181 26 255 187 178 26 255 156 149 22 255 187 178 26 255
35:5 57 189 45 255 56 186 44 255 47 156 37 255 56 186 44 255
35:6 211 132 145 255 209 130 143 255 174 109 120 255 209 130 143 255
35:7 65 67 63 255 64 66 62 255 54 55 52 255 64 66 62 255
35:8 154 166 156 255 152 163 154 255 127 137 128 255 152 163 154 255
35:9 38 117 141 255 37 115 139 255 31 96 116 255 37 115 139 255
35:10 126 54 184 255 124 53 181 255 104 44 151 255 124 53 181 255
35:11 38 51 144 255 37 50 143 255 31 42 119 255 37 50 143 255
35:12 83 51 26 255 82 50 26 255 69 42 22 255 82 50 26 255
35:13 54 77 22 255 54 76 22 255 45 63 19 255 54 76 22 255
35:14 159 45 38 255 157 44 38 255 131 37 32 255 157 44 38 255
35:15 26 23 22 255 26 23 21 255 22 19 18 255 26 23 21 255
36 0 0 0 254 0 0 0 254 0 0 0 254 0 0 0 254
37 73 108 60 254 61 90 50 254 51 75 42 254 61 90 50 254
38 84 139 187 254 70 116 155 254 59 97 130 254 70 116 155 254
39 184 144 0 254 153 119 0 254 128 100 0 254 153 119 0 254
40 201 17 17 254 168 14 14 254 140 12 12 254 168 14 14 254
41 247 255 239 255 244 251 236 255 204 210 197 255 244 251 236 255
42 249 249 249 255 207 207 207 255 173 173 173 255 207 207 207 255
43 122 112 99 255 101 93 82 255 85 78 69 255 101 93 82 255
44 122 112 99 254 101 93 82 254 85 78 69 254 101 93 82 254
45 230 103 73 255 192 86 61 255 160 71 50 255 192 86 61 255
46 255 79 30 255 231 72 27 255 193 60 22 255 231 72 27 255
48 96 108 70 255 80 90 58 255 67 75 49 255 80 90 58 255
49 83 67 83 255 69 56 69 255 58 47 58 255 69 56 69 255
50 255 203 58 200 255 203 58 200 212 169 48 200 255 203 58 200
51 255 170 30 200 255 170 30 200 212 141 25 200 255 170 30 200
52 255 228 52 255 255 228 52 255 212 190 43 255 255 228 52 255
53 145 109 80 255 121 91 67 255 101 76 56 255 121 91 67 255
54 165 132 100 255 138 110 84 255 115 92 70 255 138 110 84 255
55 116 21 21 255 97 18 18 255 81 15 15 255 97 18 18 255
56 115 230 255 255 105 210 232 255 88 175 194 255 105 210 232 255
57 164 217 237 255 136 181 198 255 114 151 165 255 136 181 198 255
58 171 138 99 255 142 115 82 255 118 96 68 255 142 115 82 255
59 136 152 21 255 114 127 17 255 95 106 14 255 114 127 17 255
60 123 82 51 255 103 68 43 255 86 57 36 255 103 68 43 255
61 158 128 73 255 132 106 61 255 110 89 51 255 132 106 61 255
62 158 128 73 255 132 106 61 255 110 89 51 255 132 106 61 255
63 60 112 17 255 50 93 14 255 42 78 12 255 50 93 14 255
64 129 97 69 255 108 81 57 255 90 68 47 255 108 81 57 255
65 144 128 99 32 120 106 82 32 100 89 69 32 120 106 82 32
66 113 109 102 180 94 91 85 180 79 76 71 180 94 91 85 180
67 115 107 93 255 96 89 78 255 80 75 65 255 96 89 78 255
71 255 255 255 255 229 229 229 255 191 191 191 255 229 229 229 255
73 174 107 107 255 145 89 89 255 121 75 75 255 145 89 89 255
74 174 107 107 255 145 89 89 255 121 75 75 255 145 89 89 255
75 255 140 61 254 217 119 52 254 181 99 43 254 217 119 52 254
76 255 0 0 254 255 0 0 254 212 0 0 254 255 0 0 254
78 237 248 255 254 237 248 255 254 198 207 212 254 237 248 255 254
79 166 222 255 55 166 222 255 55 139 185 212 55 166 222 255 55
80 237 248 255 255 237 248 255 255 198 207 212 255 237 248 255 255
81 116 167 80 255 97 139 67 255 81 116 56 255 97 139 67 255
82 234 240 255 255 216 221 235 255 180 185 196 255 216 221 235 255
83 136 167 74 255 114 139 62 255 95 116 52 255 114 139 62 255
84 116 97 80 255 97 81 67 255 81 68 55 255 97 81 67 255
85 115 99 63 255 96 82 52 255 80 69 44 255 96 82 52 255
Executable → Regular
+172 -45
View File
@@ -1,45 +1,172 @@
# All paths in this configuration file are relative to Dynmap's data-folder: minecraft_server/plugins/dynmap/
# How often a tile gets rendered (in seconds).
renderinterval: 1
# The path where the tile-files are placed.
tilepath: web/tiles
# The path where the web-files are located.
webpath: web
# The network-interface the webserver will bind to (0.0.0.0 for all interfaces, 127.0.0.1 for only local access).
webserver-bindaddress: 0.0.0.0
# The TCP-port the webserver will listen on.
webserver-port: 8123
# The maptypes Dynmap will use to render.
maps:
- class: org.dynmap.kzedmap.KzedMap
renderers:
- class: org.dynmap.kzedmap.DefaultTileRenderer
prefix: t
- class: org.dynmap.kzedmap.CaveTileRenderer
prefix: ct
web:
# Interval the browser should poll for updates.
updaterate: 2000
showchatballoons: true
showplayerfacesonmap: true
showplayerfacesinmenu: true
# The name of the map shown when opening Dynmap's page (must be in menu).
defaultmap: defaultmap
# The maps shown in the menu.
shownmaps:
- type: KzedMapType
name: defaultmap
prefix: t
- type: KzedMapType
name: cavemap
prefix: ct
# All paths in this configuration file are relative to Dynmap's data-folder: minecraft_server/plugins/dynmap/
# Treat hiddenplayers.txt as a whitelist for players to be shown on the map? (Default false)
display-whitelist: false
# How often a tile gets rendered (in seconds).
renderinterval: 1
# Do render on main thread - may generate more server load, but safer and fixes broken tiles
renderonsync: true
render-triggers:
# - playermove
# - playerjoin
- blockplaced
- blockbreak
# The path where the tile-files are placed.
tilespath: web/tiles
# The path where the web-files are located.
webpath: web
# The network-interface the webserver will bind to (0.0.0.0 for all interfaces, 127.0.0.1 for only local access).
webserver-bindaddress: 0.0.0.0
# The TCP-port the webserver will listen on.
webserver-port: 8123
# Disables Webserver portion of Dynmap (Advanced users only)
disable-webserver: false
# Writes JSON to file in the webpath
jsonfile: false
# How often the json file gets written to(in seconds)
jsonfile-interval: 1
# Use timesliced fullrender - takes a bit longer, but much more polite for server
timeslicerender: true
# Period between tile renders for timesliced fullrender, in seconds
timesliceinterval: 0.5
# The maptypes Dynmap will use to render.
worlds:
- name: world
maps:
- class: org.dynmap.flat.FlatMap
prefix: flat
colorscheme: default
- class: org.dynmap.kzedmap.KzedMap
renderers:
- class: org.dynmap.kzedmap.DefaultTileRenderer
prefix: t
maximumheight: 127
colorscheme: default
#- class: org.dynmap.kzedmap.HighlightTileRenderer
# prefix: ht
# maximumheight: 127
# colorscheme: default
# highlight: # For highlighting multiple block-types.
# - 56 # Highlight diamond-ore
# - 66 # Highlight minecart track
# highlight: 56 # For highlighting a single block-type.
- class: org.dynmap.kzedmap.CaveTileRenderer
prefix: ct
maximumheight: 127
- name: nether
maps:
- class: org.dynmap.flat.FlatMap
prefix: flat
colorscheme: default
- class: org.dynmap.kzedmap.KzedMap
renderers:
- class: org.dynmap.kzedmap.DefaultTileRenderer
prefix: nt
maximumheight: 64
colorscheme: default
web:
# Handles the clientside updates differently only enable if using jsonfile
jsonfile: false
# Interval the browser should poll for updates.
updaterate: 2000
allowchat: true
allowwebchat: true
webchat-interval: 5
showplayerfacesinmenu: true
joinmessage: "%playername% joined"
quitmessage: "%playername% quit"
spammessage: "You may only chat once every %interval% seconds."
components:
- type: chat
- type: chatballoon
focuschatballoons: false
- type: chatbox
showplayerfaces: true
messagettl: 5
- type: playermarkers
showplayerfaces: true
#- type: digitalclock
- type: timeofdayclock
showdigitalclock: true
#showweather: true
#- type: regions
# name: WorldGuard
# useworldpath: true
# filename: regions.yml
# basenode: regions
# use3dregions: true
# infowindow: '<div class="infowindow"><span style="font-size:120%;">%regionname% - %priority% (%parent%)</span><br /> Owners <span style="font-weight:bold;">%playerowners% %groupowners%</span><br />Members <span style="font-weight:bold;">%playermembers% %groupmembers%</span><br />Flags<br /><span style="font-weight:bold;">%flags%</span></div>'
# regionstyle:
# strokeColor: "#FF0000"
# strokeOpacity: 0.8
# strokeWeight: 3
# fillColor: "#FF0000"
# fillOpacity: 0.35
defaultworld: world
worlds:
- title: World
name: world
maps:
- type: FlatMapType
title: Flat
name: flat
prefix: flat
- type: KzedMapType
title: Surface
name: surface
prefix: t
#- type: KzedMapType
# title: Highlighted Map
# name: highlight
# prefix: ht
- type: KzedMapType
title: Cave
name: cave
prefix: ct
- title: Nether
name: nether
maps:
- type: FlatMapType
title: Flat
name: flat
prefix: flat
- type: KzedMapType
title: Surface
name: nether
prefix: nt
# Example:
#- title: Other World # With what name the world is displayed.
# name: world_other # The actual name of the world (equal to your directory-name).
# maps:
# - type: KzedMapType # The type (or perspective) of the map. At the moment, there are no others than KzedMapType.
# title: Surface # The name of the map that will be displayed.
# name: surface # The actual name of the map (should be unique for this world).
# prefix: t # The prefix of the tile-files that are generated.
# icon: images/block_other.png # Sets a custom icon for the map. (optional)
# - type: KzedMapType
# title: Cave
# name: cave
# prefix: ct
# Enables debugging.
#debuggers:
# - class: org.dynmap.debug.LogDebugger
+6
View File
@@ -0,0 +1,6 @@
dynmap.render # Render current chunk
dynmap.fullrender # Issue a full render
dynmap.hide.self # Hide self from map
dynmap.hide.others # Hide others from map
dynmap.show.self # Reveal self on map
dynmap.show.others # Reveal others on map
+35 -6
View File
@@ -1,10 +1,17 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.bukkit</groupId>
<artifactId>dynamic-map</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>DynamicMap</name>
<url>http://www.bukkit.org</url>
<groupId>org.dynmap</groupId>
<artifactId>dynmap</artifactId>
<version>0.16</version>
<name>dynmap</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<url>http://github.com/FrozenCow/dynmap/</url>
<issueManagement>
<system>GitHub</system>
<url>https://github.com/FrozenCow/dynmap/issues</url>
</issueManagement>
<build>
<plugins>
<plugin>
@@ -16,9 +23,31 @@
<target>1.6</target>
</configuration>
</plugin>
</plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/package.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>build</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.nijikokun.bukkit</groupId>
<artifactId>Permissions</artifactId>
<version>[2.5.4,)</version>
</dependency>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
+37
View File
@@ -0,0 +1,37 @@
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>bin</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${project.basedir}</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>README*</include>
<include>LICENSE*</include>
<include>NOTICE*</include>
<include>CHANGELOG*</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.basedir}/web</directory>
<outputDirectory>/dynmap/web</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.basedir}/colorschemes</directory>
<outputDirectory>/dynmap/colorschemes</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.basedir}</directory>
<outputDirectory>/dynmap/</outputDirectory>
<includes>
<include>configuration.txt</include></includes></fileSet>
</fileSets>
<files>
<file>
<source>${project.build.directory}/${artifactId}-${version}.jar</source>
<outputDirectory>/</outputDirectory>
<destName>dynmap.jar</destName></file></files>
</assembly>
@@ -0,0 +1,111 @@
package org.dynmap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
public class AsynchronousQueue<T> {
protected static final Logger log = Logger.getLogger("Minecraft");
private Object lock = new Object();
private Thread thread;
private LinkedList<T> queue = new LinkedList<T>();
private Set<T> set = new HashSet<T>();
private Handler<T> handler;
private int dequeueTime;
public AsynchronousQueue(Handler<T> handler, int dequeueTime) {
this.handler = handler;
this.dequeueTime = dequeueTime;
}
public boolean push(T t) {
synchronized (lock) {
if (set.add(t)) {
queue.addLast(t);
return true;
}
return false;
}
}
private T pop() {
synchronized (lock) {
try {
T t = queue.removeFirst();
if (!set.remove(t)) {
// This should never happen.
}
return t;
} catch (NoSuchElementException e) {
return null;
}
}
}
public int size() {
return set.size();
}
public void start() {
synchronized (lock) {
thread = new Thread(new Runnable() {
@Override
public void run() {
running();
}
});
thread.start();
try {
thread.setPriority(Thread.MIN_PRIORITY);
} catch (SecurityException e) {
log.info("Failed to set minimum priority for worker thread!");
}
}
}
public void stop() {
synchronized (lock) {
if (thread == null)
return;
Thread oldThread = thread;
thread = null;
log.info("Stopping map renderer...");
oldThread.interrupt();
try {
oldThread.join(1000);
} catch (InterruptedException e) {
log.info("Waiting for map renderer to stop is interrupted");
}
}
}
private void running() {
try {
while (Thread.currentThread() == thread) {
T t = pop();
if (t != null) {
handler.handle(t);
}
sleep(dequeueTime);
}
} catch (Exception ex) {
log.log(Level.SEVERE, "Exception on rendering-thread", ex);
}
}
private boolean sleep(int time) {
try {
Thread.sleep(time);
} catch (InterruptedException e) {
return false;
}
return true;
}
}
+88 -93
View File
@@ -2,115 +2,110 @@ package org.dynmap;
import java.util.HashMap;
public class Cache<K, V>
{
private final int size;
private int len;
public class Cache<K, V> {
private final int size;
private int len;
private CacheNode head;
private CacheNode tail;
private CacheNode head;
private CacheNode tail;
private class CacheNode
{
public CacheNode prev;
public CacheNode next;
public K key;
public V value;
private class CacheNode {
public CacheNode prev;
public CacheNode next;
public K key;
public V value;
public CacheNode(K key, V value)
{
this.key = key;
this.value = value;
prev = null;
next = null;
}
public CacheNode(K key, V value) {
this.key = key;
this.value = value;
prev = null;
next = null;
}
public void unlink()
{
if(prev == null) {
head = next;
} else {
prev.next = next;
}
public void unlink() {
if (prev == null) {
head = next;
} else {
prev.next = next;
}
if(next == null) {
tail = prev;
} else {
next.prev = prev;
}
if (next == null) {
tail = prev;
} else {
next.prev = prev;
}
prev = null;
next = null;
prev = null;
next = null;
len --;
}
len--;
}
public void append()
{
if(tail == null) {
head = this;
tail = this;
} else {
tail.next = this;
prev = tail;
tail = this;
}
public void append() {
if (tail == null) {
head = this;
tail = this;
} else {
tail.next = this;
prev = tail;
tail = this;
}
len ++;
}
}
len++;
}
}
private HashMap<K, CacheNode> map;
private HashMap<K, CacheNode> map;
public Cache(int size)
{
this.size = size;
len = 0;
public Cache(int size) {
this.size = size;
len = 0;
head = null;
tail = null;
head = null;
tail = null;
map = new HashMap<K, CacheNode>();
}
map = new HashMap<K, CacheNode>();
}
/* returns value for key, if key exists in the cache
* otherwise null */
public V get(K key)
{
CacheNode n = map.get(key);
if(n == null)
return null;
return n.value;
}
/*
* returns value for key, if key exists in the cache otherwise null
*/
public V get(K key) {
CacheNode n = map.get(key);
if (n == null)
return null;
return n.value;
}
/* puts a new key-value pair in the cache
* if the key existed already, the value is updated, and the old value is returned
* if the key didn't exist, it is added; the oldest value (now pushed out of the
* cache) may be returned, or null if the cache isn't yet full */
public V put(K key, V value)
{
CacheNode n = map.get(key);
if(n == null) {
V ret = null;
/*
* puts a new key-value pair in the cache if the key existed already, the
* value is updated, and the old value is returned if the key didn't exist,
* it is added; the oldest value (now pushed out of the cache) may be
* returned, or null if the cache isn't yet full
*/
public V put(K key, V value) {
CacheNode n = map.get(key);
if (n == null) {
V ret = null;
if(len >= size) {
CacheNode first = head;
first.unlink();
map.remove(first.key);
ret = first.value;
}
if (len >= size) {
CacheNode first = head;
first.unlink();
map.remove(first.key);
ret = first.value;
}
CacheNode add = new CacheNode(key, value);
add.append();
map.put(key, add);
CacheNode add = new CacheNode(key, value);
add.append();
map.put(key, add);
return ret;
} else {
n.unlink();
V old = n.value;
n.value = value;
n.append();
return old;
}
}
return ret;
} else {
n.unlink();
V old = n.value;
n.value = value;
n.append();
return old;
}
}
}
-70
View File
@@ -1,70 +0,0 @@
package org.dynmap;
import java.util.ArrayList;
import java.util.LinkedList;
import org.bukkit.event.player.PlayerChatEvent;
public class ChatQueue {
public class ChatMessage
{
public long time;
public String playerName;
public String message;
public ChatMessage(PlayerChatEvent event)
{
time = System.currentTimeMillis();
playerName = event.getPlayer().getName();
message = event.getMessage();
}
}
/* a list of recent chat message */
private LinkedList<ChatMessage> messageQueue;
/* remember up to this old chat messages (ms) */
private static final int maxChatAge = 120000;
public ChatQueue() {
messageQueue = new LinkedList<ChatMessage>();
}
/* put a chat message in the queue */
public void pushChatMessage(PlayerChatEvent event)
{
synchronized(MapManager.lock) {
messageQueue.add(new ChatMessage(event));
}
}
public ChatMessage[] getChatMessages(long cutoff) {
ArrayList<ChatMessage> queue = new ArrayList<ChatMessage>();
ArrayList<ChatMessage> updateList = new ArrayList<ChatMessage>();
queue.addAll(messageQueue);
long now = System.currentTimeMillis();
long deadline = now - maxChatAge;
synchronized(MapManager.lock) {
for (ChatMessage message : queue)
{
if (message.time < deadline)
{
messageQueue.remove(message);
}
else if (message.time >= cutoff)
{
updateList.add(message);
}
}
}
ChatMessage[] messages = new ChatMessage[updateList.size()];
updateList.toArray(messages);
return messages;
}
}
+71
View File
@@ -0,0 +1,71 @@
package org.dynmap;
import org.bukkit.ChatColor;
public class Client {
public static class Update {
public long timestamp;
public long servertime;
public boolean hasStorm;
public boolean isThundering;
public Player[] players;
public Object[] updates;
}
public static class Player {
public String type = "player";
public String name;
public String world;
public double x, y, z;
public Player(String name, String world, double x, double y, double z) {
this.name = ChatColor.stripColor(name);
this.world = world;
this.x = x;
this.y = y;
this.z = z;
}
}
public static class Stamped {
public long timestamp = System.currentTimeMillis();
}
public static class ChatMessage extends Stamped {
public String type = "chat";
public String source;
public String playerName;
public String message;
public ChatMessage(String source, String playerName, String message) {
this.source = source;
this.playerName = ChatColor.stripColor(playerName);
this.message = ChatColor.stripColor(message);
}
}
public static class PlayerJoinMessage extends Stamped {
public String type = "playerjoin";
public String playerName;
public PlayerJoinMessage(String playerName) {
this.playerName = ChatColor.stripColor(playerName);
}
}
public static class PlayerQuitMessage extends Stamped {
public String type = "playerquit";
public String playerName;
public PlayerQuitMessage(String playerName) {
this.playerName = ChatColor.stripColor(playerName);
}
}
public static class Tile extends Stamped {
public String type = "tile";
public String name;
public Tile(String name) {
this.name = name;
}
}
}
+125
View File
@@ -0,0 +1,125 @@
package org.dynmap;
import java.awt.Color;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.dynmap.debug.Debug;
public class ColorScheme {
protected static final Logger log = Logger.getLogger("Minecraft");
private static final HashMap<String, ColorScheme> cache = new HashMap<String, ColorScheme>();
public String name;
/* Switch to arrays - faster than map */
public Color[][] colors; /* [blk-type][step] */
public Color[][][] datacolors; /* [bkt-type][blk-dat][step] */
public ColorScheme(String name, Color[][] colors, Color[][][] datacolors) {
this.name = name;
this.colors = colors;
this.datacolors = datacolors;
}
private static File getColorSchemeDirectory() {
return new File(DynmapPlugin.dataDirectory, "colorschemes");
}
public static ColorScheme getScheme(String name) {
if (name == null)
name = "default";
ColorScheme scheme = cache.get(name);
if (scheme == null) {
scheme = loadScheme(name);
cache.put(name, scheme);
}
return scheme;
}
public static ColorScheme loadScheme(String name) {
File colorSchemeFile = new File(getColorSchemeDirectory(), name + ".txt");
Color[][] colors = new Color[256][];
Color[][][] datacolors = new Color[256][][];
InputStream stream;
boolean enab_datacolor = MapManager.mapman.doSyncRender();
try {
Debug.debug("Loading colors from '" + colorSchemeFile + "'...");
stream = new FileInputStream(colorSchemeFile);
Scanner scanner = new Scanner(stream);
int nc = 0;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line.startsWith("#") || line.equals("")) {
continue;
}
String[] split = line.split("\t");
if (split.length < 17) {
continue;
}
Integer id;
Integer dat = null;
int idx = split[0].indexOf(':');
if(idx > 0) { /* ID:data - data color */
id = new Integer(split[0].substring(0, idx));
dat = new Integer(split[0].substring(idx+1));
}
else {
id = new Integer(split[0]);
}
Color[] c = new Color[4];
/* store colors by raycast sequence number */
c[0] = new Color(Integer.parseInt(split[1]), Integer.parseInt(split[2]), Integer.parseInt(split[3]), Integer.parseInt(split[4]));
c[3] = new Color(Integer.parseInt(split[5]), Integer.parseInt(split[6]), Integer.parseInt(split[7]), Integer.parseInt(split[8]));
c[1] = new Color(Integer.parseInt(split[9]), Integer.parseInt(split[10]), Integer.parseInt(split[11]), Integer.parseInt(split[12]));
c[2] = new Color(Integer.parseInt(split[13]), Integer.parseInt(split[14]), Integer.parseInt(split[15]), Integer.parseInt(split[16]));
if(dat != null) {
if(enab_datacolor) {
Color[][] dcolor = datacolors[id]; /* Existing list? */
if(dcolor == null) {
dcolor = new Color[16][]; /* Make 16 index long list */
datacolors[id] = dcolor;
}
if((dat >= 0) && (dat < 16)) { /* Add color to list */
dcolor[dat] = c;
}
}
if(dat == 0) { /* Index zero is base color too */
colors[id] = c;
}
}
else {
colors[id] = c;
}
nc += 1;
}
scanner.close();
/* Last, push base color into any open slots in data colors list */
for(int k = 0; k < 256; k++) {
Color[][] dc = datacolors[k]; /* see if data colors too */
if(dc != null) {
Color[] c = colors[k];
for(int i = 0; i < 16; i++) {
if(dc[i] == null)
dc[i] = c;
}
}
}
} catch (RuntimeException e) {
log.log(Level.SEVERE, "Could not load colors '" + name + "' ('" + colorSchemeFile + "').", e);
return null;
} catch (FileNotFoundException e) {
log.log(Level.SEVERE, "Could not load colors '" + name + "' ('" + colorSchemeFile + "'): File not found.", e);
}
return new ColorScheme(name, colors, datacolors);
}
}
@@ -1,28 +0,0 @@
package org.dynmap;
import org.bukkit.block.Block;
import org.bukkit.block.BlockDamageLevel;
import org.bukkit.event.block.BlockDamageEvent;
import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.BlockPlaceEvent;
public class DynmapBlockListener extends BlockListener {
private MapManager mgr;
public DynmapBlockListener(MapManager mgr) {
this.mgr = mgr;
}
@Override
public void onBlockPlace(BlockPlaceEvent event) {
Block blockPlaced = event.getBlockPlaced();
mgr.touch(blockPlaced.getX(), blockPlaced.getY(), blockPlaced.getZ());
}
public void onBlockDamage(BlockDamageEvent event) {
if (event.getDamageLevel() == BlockDamageLevel.BROKEN) {
Block blockBroken = event.getBlock();
mgr.touch(blockBroken.getX(), blockBroken.getY(), blockBroken.getZ());
}
}
}
+10
View File
@@ -0,0 +1,10 @@
package org.dynmap;
public class DynmapChunk {
public int x, z;
public DynmapChunk(int x, int z) {
this.x = x;
this.z = z;
}
}
@@ -0,0 +1,31 @@
package org.dynmap;
import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerListener;
import org.bukkit.event.player.PlayerQuitEvent;
public class DynmapPlayerChatListener extends PlayerListener {
DynmapPlugin plugin;
public DynmapPlayerChatListener(DynmapPlugin plugin) {
this.plugin = plugin;
}
@Override
public void onPlayerChat(PlayerChatEvent event) {
if(event.isCancelled()) return;
plugin.mapManager.pushUpdate(new Client.ChatMessage("player", event.getPlayer().getDisplayName(), event.getMessage()));
}
@Override
public void onPlayerJoin(PlayerJoinEvent event) {
plugin.mapManager.pushUpdate(new Client.PlayerJoinMessage(event.getPlayer().getDisplayName()));
}
@Override
public void onPlayerQuit(PlayerQuitEvent event) {
plugin.mapManager.pushUpdate(new Client.PlayerQuitMessage(event.getPlayer().getDisplayName()));
}
}
@@ -1,51 +0,0 @@
package org.dynmap;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerListener;
public class DynmapPlayerListener extends PlayerListener {
private MapManager mgr;
private PlayerList playerList;
public DynmapPlayerListener(MapManager mgr, PlayerList playerList) {
this.mgr = mgr;
this.playerList = playerList;
}
@Override
public void onPlayerCommand(PlayerChatEvent event) {
String[] split = event.getMessage().split(" ");
if (split[0].equalsIgnoreCase("/dynmap")) {
if (split.length > 1) {
if (split[1].equals("render")) {
Player player = event.getPlayer();
mgr.touch(player.getLocation().getBlockX(), player.getLocation().getBlockY(), player.getLocation().getBlockZ());
event.setCancelled(true);
} else if (split[1].equals("hide")) {
if (split.length == 2) {
playerList.hide(event.getPlayer().getName());
} else for (int i=2;i<split.length;i++)
playerList.hide(split[i]);
event.setCancelled(true);
} else if (split[1].equals("show")) {
if (split.length == 2) {
playerList.show(event.getPlayer().getName());
} else for (int i=2;i<split.length;i++)
playerList.show(split[i]);
event.setCancelled(true);
}
}
}
}
/**
* Called when a player sends a chat message
*
* @param event Relevant event details
*/
public void onPlayerChat(PlayerChatEvent event)
{
mgr.addChatEvent(event);
}
}
+389 -83
View File
@@ -1,101 +1,407 @@
package org.dynmap;
import java.util.logging.Logger;
import java.io.IOException;
import java.io.File;
import org.bukkit.*;
import org.bukkit.event.*;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Timer;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.Event.Priority;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockListener;
import org.bukkit.plugin.*;
import org.bukkit.plugin.java.*;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerListener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.world.ChunkLoadEvent;
import org.bukkit.event.world.WorldListener;
import org.bukkit.event.world.WorldLoadEvent;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.config.Configuration;
import org.dynmap.debug.BukkitPlayerDebugger;
import org.dynmap.web.WebServer;
import org.dynmap.Event.Listener;
import org.dynmap.debug.Debug;
import org.dynmap.debug.Debugger;
import org.dynmap.permissions.NijikokunPermissions;
import org.dynmap.permissions.OpPermissions;
import org.dynmap.permissions.PermissionProvider;
import org.dynmap.web.HttpServer;
import org.dynmap.web.Json;
import org.dynmap.web.handlers.ClientConfigurationHandler;
import org.dynmap.web.handlers.ClientUpdateHandler;
import org.dynmap.web.handlers.FilesystemHandler;
import org.dynmap.web.handlers.SendMessageHandler;
public class DynmapPlugin extends JavaPlugin {
protected static final Logger log = Logger.getLogger("Minecraft");
protected static final Logger log = Logger.getLogger("Minecraft");
public HttpServer webServer = null;
public MapManager mapManager = null;
public PlayerList playerList;
public Configuration configuration;
public HashSet<String> enabledTriggers = new HashSet<String>();
public PermissionProvider permissions;
private WebServer webServer = null;
private MapManager mapManager = null;
private PlayerList playerList;
private BukkitPlayerDebugger debugger = new BukkitPlayerDebugger(this);
public static File dataRoot;
public DynmapPlugin(PluginLoader pluginLoader, Server instance, PluginDescriptionFile desc, File folder, File plugin, ClassLoader cLoader) {
super(pluginLoader, instance, desc, folder, plugin, cLoader);
dataRoot = folder;
}
public Timer timer;
public World getWorld() {
return getServer().getWorlds()[0];
}
public MapManager getMapManager() {
return mapManager;
}
public WebServer getWebServer() {
return webServer;
}
public static File dataDirectory;
public static File tilesDirectory;
public void onEnable() {
Configuration configuration = new Configuration(new File(this.getDataFolder(), "configuration.txt"));
configuration.load();
debugger.enable();
playerList = new PlayerList(getServer());
playerList.load();
mapManager = new MapManager(getWorld(), debugger, configuration);
mapManager.startManager();
public MapManager getMapManager() {
return mapManager;
}
try {
webServer = new WebServer(mapManager, getServer(), playerList, debugger, configuration);
} catch(IOException e) {
log.info("position failed to start WebServer (IOException)");
}
registerEvents();
}
public HttpServer getWebServer() {
return webServer;
}
public void onEnable() {
permissions = NijikokunPermissions.create(getServer(), "dynmap");
if (permissions == null)
permissions = new OpPermissions(new String[] { "fullrender" });
public void onDisable() {
mapManager.stopManager();
dataDirectory = this.getDataFolder();
if(webServer != null) {
webServer.shutdown();
webServer = null;
}
debugger.disable();
}
configuration = new Configuration(new File(this.getDataFolder(), "configuration.txt"));
configuration.load();
public void registerEvents() {
BlockListener blockListener = new DynmapBlockListener(mapManager);
getServer().getPluginManager().registerEvent(Event.Type.BLOCK_PLACED, blockListener, Priority.Normal, this);
getServer().getPluginManager().registerEvent(Event.Type.BLOCK_DAMAGED, blockListener, Priority.Normal, this);
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_COMMAND, new DynmapPlayerListener(mapManager, playerList), Priority.Normal, this);
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_CHAT, new DynmapPlayerListener(mapManager, playerList), Priority.Normal, this);
//getServer().getPluginManager().registerEvent(Event.Type.BLOCK_DESTROYED, listener, Priority.Normal, this);
/* etc.getLoader().addListener(PluginLoader.Hook.COMMAND, listener, this, PluginListener.Priority.MEDIUM);
etc.getLoader().addListener(PluginLoader.Hook.BLOCK_CREATED, listener, this, PluginListener.Priority.MEDIUM);
etc.getLoader().addListener(PluginLoader.Hook.BLOCK_DESTROYED, listener, this, PluginListener.Priority.MEDIUM);
etc.getLoader().addListener(PluginLoader.Hook.LOGIN, listener, this, PluginListener.Priority.MEDIUM);
loadDebuggers();
etc.getInstance().addCommand("/map_wait", " [wait] - set wait between tile renders (ms)");
etc.getInstance().addCommand("/map_stat", " - query number of tiles in render queue");
etc.getInstance().addCommand("/map_regen", " - regenerate entire map");
etc.getInstance().addCommand("/map_debug", " - send map debugging messages");
etc.getInstance().addCommand("/map_nodebug", " - disable map debugging messages");
etc.getInstance().addCommand("/addsign", " [name] - adds a named sign to the map");
etc.getInstance().addCommand("/removesign", " [name] - removes a named sign to the map");
etc.getInstance().addCommand("/listsigns", " - list all named signs");
etc.getInstance().addCommand("/tpsign", " [name] - teleport to a named sign");
*/
}
tilesDirectory = getFile(configuration.getString("tilespath", "web/tiles"));
if (!tilesDirectory.isDirectory() && !tilesDirectory.mkdirs()) {
log.warning("Could not create directory for tiles ('" + tilesDirectory + "').");
}
playerList = new PlayerList(getServer(), getFile("hiddenplayers.txt"), configuration);
playerList.load();
mapManager = new MapManager(this, configuration);
mapManager.startRendering();
if (!configuration.getBoolean("disable-webserver", false)) {
loadWebserver();
}
if (configuration.getBoolean("jsonfile", false)) {
jsonConfig();
int jsonInterval = configuration.getInt("jsonfile-interval", 1) * 1000;
timer = new Timer();
timer.scheduleAtFixedRate(new JsonTimerTask(this, configuration), jsonInterval, jsonInterval);
}
enabledTriggers.clear();
for (Object trigger : configuration.getList("render-triggers")) {
enabledTriggers.add((String) trigger);
}
registerEvents();
}
public void loadWebserver() {
InetAddress bindAddress;
{
String address = configuration.getString("webserver-bindaddress", "0.0.0.0");
try {
bindAddress = address.equals("0.0.0.0")
? null
: InetAddress.getByName(address);
} catch (UnknownHostException e) {
bindAddress = null;
}
}
int port = configuration.getInt("webserver-port", 8123);
webServer = new HttpServer(bindAddress, port);
webServer.handlers.put("/", new FilesystemHandler(getFile(configuration.getString("webpath", "web"))));
webServer.handlers.put("/tiles/", new FilesystemHandler(tilesDirectory));
webServer.handlers.put("/up/", new ClientUpdateHandler(mapManager, playerList, getServer()));
webServer.handlers.put("/up/configuration", new ClientConfigurationHandler((Map<?, ?>) configuration.getProperty("web")));
if (configuration.getNode("web").getBoolean("allowwebchat", false)) {
SendMessageHandler messageHandler = new SendMessageHandler() {{
maximumMessageInterval = (configuration.getNode("web").getInt("webchat-interval", 1) * 1000);
spamMessage = "\""+configuration.getNode("web").getString("spammessage", "You may only chat once every %interval% seconds.")+"\"";
onMessageReceived.addListener(new Listener<SendMessageHandler.Message>() {
@Override
public void triggered(Message t) {
webChat(t.name, t.message);
}
});
}};
webServer.handlers.put("/up/sendmessage", messageHandler);
}
try {
webServer.startServer();
} catch (IOException e) {
log.severe("Failed to start WebServer on " + bindAddress + ":" + port + "!");
}
/* Print version info */
PluginDescriptionFile pdfFile = this.getDescription();
log.info("[dynmap] version " + pdfFile.getVersion() + " is enabled" );
}
public void onDisable() {
mapManager.stopRendering();
if (webServer != null) {
webServer.shutdown();
webServer = null;
}
if (timer != null) {
timer.cancel();
}
Debug.clearDebuggers();
}
public boolean isTrigger(String s) {
return enabledTriggers.contains(s);
}
public void registerEvents() {
final PluginManager pm = getServer().getPluginManager();
final MapManager mm = mapManager;
// To trigger rendering.
{
BlockListener renderTrigger = new BlockListener() {
@Override
public void onBlockPlace(BlockPlaceEvent event) {
mm.touch(event.getBlockPlaced().getLocation());
}
@Override
public void onBlockBreak(BlockBreakEvent event) {
mm.touch(event.getBlock().getLocation());
}
};
if (isTrigger("blockplaced"))
pm.registerEvent(Event.Type.BLOCK_PLACE, renderTrigger, Priority.Monitor, this);
if (isTrigger("blockbreak"))
pm.registerEvent(Event.Type.BLOCK_BREAK, renderTrigger, Priority.Monitor, this);
}
{
PlayerListener renderTrigger = new PlayerListener() {
@Override
public void onPlayerJoin(PlayerJoinEvent event) {
mm.touch(event.getPlayer().getLocation());
}
@Override
public void onPlayerMove(PlayerMoveEvent event) {
mm.touch(event.getPlayer().getLocation());
}
};
if (isTrigger("playerjoin"))
pm.registerEvent(Event.Type.PLAYER_JOIN, renderTrigger, Priority.Monitor, this);
if (isTrigger("playermove"))
pm.registerEvent(Event.Type.PLAYER_MOVE, renderTrigger, Priority.Monitor, this);
}
{
WorldListener renderTrigger = new WorldListener() {
@Override
public void onChunkLoad(ChunkLoadEvent event) {
int x = event.getChunk().getX() * 16 + 8;
int z = event.getChunk().getZ() * 16 + 8;
mm.touch(new Location(event.getWorld(), x, 127, z));
}
/*
* @Override public void onChunkGenerated(ChunkLoadEvent event)
* { int x = event.getChunk().getX() * 16 + 8; int z =
* event.getChunk().getZ() * 16 + 8; mm.touch(new
* Location(event.getWorld(), x, 127, z)); }
*/
};
if (isTrigger("chunkloaded"))
pm.registerEvent(Event.Type.CHUNK_LOAD, renderTrigger, Priority.Monitor, this);
//if (isTrigger("chunkgenerated")) pm.registerEvent(Event.Type.CHUNK_GENERATED, renderTrigger, Priority.Monitor, this);
}
// To announce when players have joined/quit/chatted.
if (configuration.getNode("web").getBoolean("allowchat", false)) {
// To handle webchat.
PlayerListener playerListener = new DynmapPlayerChatListener(this);
//getServer().getPluginManager().registerEvent(Event.Type.PLAYER_COMMAND, playerListener, Priority.Normal, this);
pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Priority.Monitor, this);
pm.registerEvent(Event.Type.PLAYER_LOGIN, playerListener, Priority.Monitor, this);
pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Monitor, this);
pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Priority.Monitor, this);
}
// To link configuration to real loaded worlds.
WorldListener worldListener = new WorldListener() {
@Override
public void onWorldLoad(WorldLoadEvent event) {
mm.activateWorld(event.getWorld());
}
};
pm.registerEvent(Event.Type.WORLD_LOAD, worldListener, Priority.Monitor, this);
}
private static File combinePaths(File parent, String path) {
return combinePaths(parent, new File(path));
}
private static File combinePaths(File parent, File path) {
if (path.isAbsolute())
return path;
return new File(parent, path.getPath());
}
public File getFile(String path) {
return combinePaths(getDataFolder(), path);
}
protected void loadDebuggers() {
Object debuggersConfiguration = configuration.getProperty("debuggers");
Debug.clearDebuggers();
if (debuggersConfiguration != null) {
for (Object debuggerConfiguration : (List<?>) debuggersConfiguration) {
Map<?, ?> debuggerConfigurationMap = (Map<?, ?>) debuggerConfiguration;
try {
Class<?> debuggerClass = Class.forName((String) debuggerConfigurationMap.get("class"));
Constructor<?> constructor = debuggerClass.getConstructor(JavaPlugin.class, Map.class);
Debugger debugger = (Debugger) constructor.newInstance(this, debuggerConfigurationMap);
Debug.addDebugger(debugger);
} catch (Exception e) {
log.severe("Error loading debugger: " + e);
e.printStackTrace();
continue;
}
}
}
}
private static final Set<String> commands = new HashSet<String>(Arrays.asList(new String[] {
"render",
"hide",
"show",
"fullrender" }));
@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
if (!cmd.getName().equalsIgnoreCase("dynmap"))
return false;
Player player = null;
if (sender instanceof Player)
player = (Player) sender;
if (args.length > 0) {
String c = args[0];
if (!commands.contains(c)) {
return false;
}
if (c.equals("render") && checkPlayerPermission(sender,"render")) {
if (player != null) {
int invalidates = mapManager.touch(player.getLocation());
sender.sendMessage("Queued " + invalidates + " tiles" + (invalidates == 0
? " (world is not loaded?)"
: "..."));
return true;
}
} else if (c.equals("hide")) {
if (args.length == 1) {
if(player != null && checkPlayerPermission(sender,"hide.self")) {
playerList.setVisible(player.getName(),false);
sender.sendMessage("You are now hidden on Dynmap.");
return true;
}
} else if (checkPlayerPermission(sender,"hide.others")) {
for (int i = 1; i < args.length; i++) {
playerList.setVisible(args[i],false);
sender.sendMessage(args[i] + " is now hidden on Dynmap.");
}
return true;
}
} else if (c.equals("show")) {
if (args.length == 1) {
if(player != null && checkPlayerPermission(sender,"show.self")) {
playerList.setVisible(player.getName(),true);
sender.sendMessage("You are now visible on Dynmap.");
return true;
}
} else if (checkPlayerPermission(sender,"show.others")) {
for (int i = 1; i < args.length; i++) {
playerList.setVisible(args[i],true);
sender.sendMessage(args[i] + " is now visible on Dynmap.");
}
return true;
}
} else if (c.equals("fullrender") && checkPlayerPermission(sender,"fullrender")) {
if (args.length > 1) {
for (int i = 1; i < args.length; i++) {
World w = getServer().getWorld(args[i]);
if(w != null)
mapManager.renderFullWorld(new Location(w, 0, 0, 0));
}
return true;
} else if (player != null) {
Location loc = player.getLocation();
if(loc != null)
mapManager.renderFullWorld(loc);
return true;
}
}
return true;
}
return false;
}
private boolean checkPlayerPermission(CommandSender sender, String permission) {
if (!(sender instanceof Player)) {
return true;
} else if (!permissions.has(sender, permission.toLowerCase())) {
sender.sendMessage("You don't have permission to use this command!");
return false;
}
return true;
}
private void jsonConfig() {
File outputFile;
Map<?, ?> clientConfig = (Map<?, ?>) configuration.getProperty("web");
File webpath = new File(configuration.getString("webpath", "web"), "standalone/dynmap_config.json");
if (webpath.isAbsolute())
outputFile = webpath;
else
outputFile = new File(getDataFolder(), webpath.toString());
try {
FileOutputStream fos = new FileOutputStream(outputFile);
fos.write(Json.stringifyJson(clientConfig).getBytes());
fos.close();
} catch (FileNotFoundException ex) {
log.log(Level.SEVERE, "Exception while writing JSON-configuration-file.", ex);
} catch (IOException ioe) {
log.log(Level.SEVERE, "Exception while writing JSON-configuration-file.", ioe);
}
}
public void webChat(String name, String message) {
mapManager.pushUpdate(new Client.ChatMessage("web", name, message));
log.info("[WEB]" + name + ": " + message);
getServer().broadcastMessage("[WEB]" + name + ": " + message);
}
}
+12
View File
@@ -0,0 +1,12 @@
package org.dynmap;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.World;
public class DynmapWorld {
public World world;
public List<MapType> maps = new ArrayList<MapType>();
public UpdateQueue updates = new UpdateQueue();
}
+26
View File
@@ -0,0 +1,26 @@
package org.dynmap;
import java.util.LinkedList;
import java.util.List;
public class Event<T> {
private List<Listener<T>> listeners = new LinkedList<Listener<T>>();
public synchronized void addListener(Listener<T> l) {
listeners.add(l);
}
public synchronized void removeListener(Listener<T> l) {
listeners.remove(l);
}
public synchronized void trigger(T t) {
for (Listener<T> l : listeners) {
l.triggered(t);
}
}
public interface Listener<T> {
void triggered(T t);
}
}

Some files were not shown because too many files have changed in this diff Show More