-
Notifications
You must be signed in to change notification settings - Fork 71
Expand file tree
/
Copy pathChangelog
More file actions
720 lines (653 loc) · 61.4 KB
/
Changelog
File metadata and controls
720 lines (653 loc) · 61.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
==3.3.5==
CommandHelper 3.3.5 supports Minecraft 1.16.5-1.19.3
The largest feature of this release is that support for Java 16 was added, and support for previous versions were
dropped. Additionally, while the exposed feature set is somewhat limited, various backend changes have been
committed, which improves the reliability and performance of the system, and allows for additional planned changes in
the future, particularly around static analysis, user objects, and other language features.
=== New Feature Overview ===
* Various deprecated functions have been removed. spawn_mob (use spawn_entity), tame_mob (use set_mob_owner), \
enchant_inv (use enchant_item), enchant_rm_inv (use remove_item_enchant), get_enchant_inv (use get_item_enchants), \
can_enchant_target (use can_enchant_item), get_block_at (use get_block), set_block_at (use set_block)
* Add support for 1.17-1.19 Minecraft Mobs
* Additional data in entity_spec
* MethodScript source is now hardened against bidi attacks. https://trojansource.codes/trojan-source.pdf
* Various improvements to the LangServ, which increases the functionality of the Visual Studio Code IDE. \
Things such as code outline and integration with proc docs is now supported. The idea of a "workspace" was added, \
which allows for all code to be handled as a whole project, rather than a bunch of individual files. For instance, \
the ability to go to a proc declaration from a reference was added, and smart comments added to a proc now show \
up when hovering over a proc reference. Requires static analysis to be enabled.
* RCON support was added
* Declarative prefilters were added. This has little visible effect to end users, other than to say that prefilters \
should be more performant now, and additional error checking can be done to ensure correct prefilter usage, including \
incorrect values, and unexpected additional (and unused) values. The framework is added now, and more events will \
be onboarded onto the system in the future. Some of the changes require Static Analysis to be enabled (disabled by
default).
* Initial framework support is added for function signatures. This allows native functions to specify return types and \
expected parameters, which allows for better compile time error detection, if static analysis is turned on. For now, \
most of the functions are not onboarded yet, and anyways, typechecking is disabled by default, but this will be \
enabled in the near future. If you wish to go ahead and try out your code under typechecking, please enable it \
in the static-analysis-config.ini file in the prefs folder. This will be enabled by default in the VSCode IDE plugin \
in the next version, and once deemed stable, will be enabled by default, and eventually be unable to be turned off \
in normal circumstances.
* CommandHelper reloading (that is, on startup, and also with the /recompile command) has been substantially altered. \
Now, compilation and execution are fully separated into two distinct steps, which means that code changes that cause \
a compile error will not stop the old, previously working code from running. Only successful recompiles will allow \
for the new code to begin to be executed. Preferences (files in prefs/) are now reloaded as part of a recompile. \
The halt-on-failure preference now shuts down the server if, on initial startup, the code will not compile, or other \
configuration is wrong, such that the code can not come up completely. This is useful if, for instance, some server \
security is provided through CommandHelper, so that if something changes and the code no longer will run, it is better \
for the server to shut down than run unprotected. Various other backend improvements were made in this area.
* Extension load time was reduced.
* <code>return</code> can now be used as a keyword, such as <code>return expression();</code> or <code>return;</code>
* <code>continue</code> and <code>break</code> can also be used as keywords, in the same way.
* Full support for statements has been added. In either strict and non-strict mode, adding a semicolon creates a \
statement. For now, they are not required in any mode, though they will cause errors in strict mode if they are \
used in places they shouldn't. To keep backwards compatibility, in non-strict mode, when a statement is used where \
it shouldn't be, the value will be "pulled up" and not cause any errors. For instance, for the code \
<code>if(@a;){}</code>, this will cause an error in strict mode, but work like <code>if(@a){}</code> in non-strict \
mode. Eventually, this will cause a warning in non-strict mode, but additional work is needed before that can be \
implemented. In both modes, when statements are used, properly, this may increase runtime performance, because it \
skips the automatic sconcat feature, which is required for small aliases, but is inefficient in all other cases.
* First class proc references are added. Assuming a proc named _test is defined, <code>proc _test</code> will return \
a reference to it, which can be stored in a variable, or otherwise passed around as an argument.
* Closures, iclosures, and proc references now extend the new Callable interface.
* All callables can be executed with parenthetical notation, no matter how they are stored. Previously this \
only worked with top level variables, such as <code>@c()</code> but now it works with any other format, including \
direct returns from other functions and array references, for instance, assuming func returns a Callable, \
<code>func()()</code> will execute it.
* Tab completion is now enhanced for aliases defined with the @command syntax, if they also provide type information \
in @param tags. For instance, if the alias is </code>/test $enum</code> and <code>@param $enum WorldEnvironment</code> \
is provided, then the $enum value will automatically provide autocomplete with the values from the WorldEnvironment enum.
* Support for variadic arguments is added. Callables may now be defined with a variadic type in the last parameter,
which will match all overflow parameters, for instance <code>proc _test(string... @values)</code> can now be called \
such as <code>_test('a', 'b', 'c')</code>, and @values will be an array of strings <code>array('a', 'b', 'c')</code> \
within the proc.
* Additional methods of handling dynamic includes and static analysis have been added. Forward proc declarations, \
@{DynamicProc} annotations, and additional file options. See the page on [[Procedures]] for more details.
* Annotations have been added. For now, only @{DynamicProc} exists, though this will be expanded on in the future.
* As always, hundreds of additional performance fixes and bug fixes and other minor things.
Very early support for LLVM is being introduced. This is not generally usable for basically anything yet, but you
are encouraged to take a look and provide feedback if you are a command line user.
=== Function API Additions ===
MethodScript additions: {{function|array_fill}}, {{function|fixed_array}}
Minecraft additions: {{function|get_banner_patterns}}, {{function|get_entity_freezing}},
{{function|get_hanging_direction}}, {{function|get_world_autosave}}, {{function|is_sign_text_glowing}},
{{function|psend_block_damage}}, {{function|set_banner_patterns}}, {{function|set_entity_freezing}},
{{function|set_hanging_direction}}, {{function|set_sign_text_glowing}}, {{function|set_world_autosave}}
==3.3.4==
CommandHelper 3.3.4 supports Minecraft 1.13.2 - 1.16.5. All extensions must be updated when upgrading from previous versions.
=== New Feature Overview ===
* New Visual Studio Code extension with syntax highlighting, function/event peeking, and linting for compile errors and warnings
* Adds Static Analysis framework, including type and scope checks for variables and procedures
* Adds telemetry (disabled by default)
* Adds cmdline support for Windows
* Adds 'requiredExtensions' and 'compileroptions' to [[File_Options|File Options]]
* Adds 'CodeUpgradeNotices' to suppressWarnings in File Options
* Adds '.msfileoption' files for directory level File Options
* Adds support for multiple semi-colon separated paths for 'base-dir' in Preferences
* Adds support for Brotli encoding in {{function|http_request}}
* Adds 'json-api', 'cmdline-args', 'build-extension', 'help-topic', 'edit-prefs', 'install-mssql-auth' tools to [[CommandLineTools|Cmdline tools]]
* Adds MSSQL support for query() and in [[Persistence_Network|Persistence Network]]
* Adds documentation localization tools 'validate-l10n' and 'l10n-ui'
* Adds 'help' command to Interpreter to lookup functions
* array_index_exists now supports multi-dimensional arrays and negative indices
* Adds reflect_pull('dir')
* Adds support for Minecraft 1.14 through 1.16.5
* Adds smart comments to aliases and implements `@command` structure
* Adds attribute modifiers and custom model data tag to item arrays
* Adds support for hex color codes in color() and colorize()
* Expands Minecraft recipe support
=== Other Changes ===
* Bare strings are no longer allowed
* Auto concatenation is no longer allowed in Strict Mode
* Minecraft events now ignore fake players
* Faster startup times and other performance improvements
* Hundreds of others fixes
=== Function API Additions ===
77 new functions have been added.
MethodScript additions: {{function|map_implode}}, {{function|array_push_all}}, {{function|array_get_rand}},
{{function|array_subtract}}, {{function|x_find}}, {{function|switch_ic}}, {{function|include_dir}},
{{function|execute_array}}, {{function|parse_text_table}}, {{function|always_trace}}, {{function|hypot}},
{{function|get_compiler_options}}, {{function|get_compiler_warnings}}, {{function|set_runtime_setting}},
{{function|remove_runtime_setting}}, {{function|has_runtime_setting}}, {{function|nameof}},
{{function|engine_location}}, {{function|define_object}}, {{function|new_object}}, {{function|get_pid}},
{{function|reflect_type}}, {{function|class_type}}, {{function|x_write}}, {{function|average}}, {{function|sum}},
{{function|median}}, {{function|mode}}, {{function|percentile}}, {{function|string_contains_ic}},
{{function|x_thread_join}}, {{function|x_thread_is_alive}}, {{function|x_interrupt}}, {{function|x_is_interrupted}},
{{function|x_clear_interrupt}}.
Minecraft additions: {{function|get_tabcomplete_prototype}}, {{function|tell_raw}}, {{function|get_projectile_item}},
{{function|set_projectile_item}}, {{function|get_blockdata}}, {{function|set_blockdata}}, {{function|set_skull_owner}},
{{function|get_skull_owner}}, {{function|get_sky_light_at}}, {{function|get_block_light_at}},
{{function|is_block_lockable}}, {{function|is_block_locked}}, {{function|get_block_lock}}, {{function|set_block_lock}},
{{function|get_cmd_completions}}, {{function|all_materials}}, {{function|entity_attribute_value}},
{{function|entity_attribute_base}}, {{function|entity_attribute_default}}, {{function|entity_attribute_modifiers}},
{{function|set_entity_attribute_base}}, {{function|reset_entity_attribute_base}},
{{function|add_entity_attribute_modifier}}, {{function|remove_entity_attribute_modifier}},
{{function|get_entity_immunity_ticks}}, {{function|set_entity_immunity_ticks}}, {{function|is_entity_sleeping}},
{{function|pflying}}, {{function|pattack_cooldown}}, {{function|get_plist_header}}, {{function|set_plist_header}},
{{function|get_plist_footer}}, {{function|set_plist_footer}}, {{function|ptellraw}}, {{function|pstatistic}},
{{function|set_pstatistic}}, {{function|pblocking}}, {{function|psprinting}}, {{function|remove_recipe}},
{{function|set_world_day}}, {{function|get_world_day}}, {{function|set_keep_spawn_loaded}}.
=== Event API Additions ===
7 new events have been added.
block_explode, block_form, hanging_place, entity_unleash, potion_splash, entity_potion, resource_pack_status
==3.3.3==
This release reflects the enormous changes in Minecraft 1.13, and drops support for past Minecraft versions.
As a result it has many breaking changes in regards to Minecraft data, functions and events. Please refer to the
[[Upgrade_Guide|upgrade guide]] to help you walk through what you need to change.
=== New Feature Overview ===
* Minecraft 1.13 support
* Manage villager trades and virtual merchants
=== Function API Changes ===
28 new functions have been added. 19 functions have been modified.
MethodScript Additions: {{function|set_debug_output}}, {{function|array_intersect}}, {{function|hash}},
{{function|array_subset_of}}, {{function|uuid}}, {{function|get_classes}}.
Minecraft Additions: {{function|get_block}} (replaces get_block_at), {{function|set_block}} (replaces set_block_at),
{{function|get_blockdata_string}}, {{function|set_blockdata_string}}, {{function|convert_legacy_item}},
{{function|get_mob_target}}, {{function|set_mob_target}}, {{function|get_merchant_trades}}, {{function|set_merchant_trades}},
{{function|get_virtual_merchants}}, {{function|create_virtual_merchant}}, {{function|delete_virtual_merchant}},
{{function|popen_trading}}, {{function|merchant_trader}}, {{function|get_entity_riders}}, {{function|enchant_item}}
(replaces enchant_inv), {{function|remove_item_enchant}} (replaces enchant_rm_inv), {{function|get_item_enchants}}
(replaces get_enchant_inv), {{function|can_enchant_item}} (replaces can_enchant_target), {{function|spawn_particle}},
{{function|is_mob_collidable}}, {{function|set_mob_collidable}}.
Modified: (not including item array changes) {{function|can_enchant_target}}, {{function|get_enchants}},
{{function|entity_spec}} and {{function|set_entity_spec}} for enderman and minecart blocks, {{function|phas_item}},
{{function|pitem_slot}}, {{function|pgive_item}}, {{function|ptake_item}}, {{function|pgive_enderchest_item}},
{{function|ptake_enderchest_item}}, {{function|add_to_inventory}}, {{function|take_from_inventory}},
{{function|max_stack_size}}, {{function|material_info}}, {{function|entity_line_of_sight}} and {{function|pcursor}} with
the transparent block array, {{function|pinfo}}, {{function|psend_block_change}}, {{function|spawn_falling_block}}.
=== Event API Changes ===
22 events have been modified. 2 events have been removed.
Modified events: piston_retract, piston_extend, block_break, block_place, block_burn, block_ignite, block_from_to,
block_dispense, block_grow, note_play (no more mutable data), block_fade, item_despawn, item_spawn, item_drop,
item_pickup, entity_change_block, entity_interact, inventory_click, inventory_drag, item_swap, player_interact,
vehicle_collide.
Removed events: player_prelogin, tab_complete_chat.
==3.3.2==
CommandHelper 3.3.2 supports Minecraft 1.7.10 to 1.12.2.
=== New Feature Overview ===
* New "synchronized" keyword and functionality
* New "notinstanceof" keyword
* Secure strings added
* New ||| and &&& syntax for new {{function|dor}} and {{function|dand}} functions
* New website and documentation [[SiteDeployTool.html|deployment tool]] for methodscript.com
* OAuth support
* Added "verify" command to [[CommandLineTools.html|cmdline tools]]
* Added "new" command to cmdline tools
* Added $$ mode in cmdline
* Better international language support for variable and procedure names
* [[File_Options.html|File Options]] file headers and initial [[Strict_Mode.html|Strict Mode]] support
* Significantly improved startup and compile times
* Adds support for Minecraft 1.9 - 1.12.2
* Virtual inventories
* Boss bar management
=== API Additions ===
76 new functions have been added.
MethodScript Additions:
{{function|dand}}, {{function|dor}}, {{function|get_clipboard}}, {{function|set_clipboard}}, {{function|shell_on_adv}},
{{function|shell_on}}, {{function|get_os}}, {{function|in_cmdline_mode}}, {{function|sha512}}, {{function|sinh}},
{{function|cosh}}, {{function|tanh}}, {{function|round15}}, {{function|clamp}}, {{function|x_get_oauth_token}},
{{function|clear_oauth_tokens}}, {{function|srand}}, {{function|x_recompile_includes}}, {{function|get_system_timezones}},
{{function|string_starts_with}}, {{function|string_ends_with}}, {{function|char_is_uppercase}},
{{function|string_contains}}, {{function|string_multiply}}, {{function|secure_string}},
{{function|decrypt_secure_string}}, {{function|synchronized}}, and {{function|x_launch_browser}}
CommandHelper and Minecraft Additions:
{{function|get_bars}}, {{function|create_bar}}, {{function|update_bar}}, {{function|get_bar}}, {{function|remove_bar}},
{{function|bar_add_player}}, {{function|bar_remove_player}}, {{function|get_bar_players}}, {{function|title}},
{{function|executeas}}, {{function|set_entity_glowing}}, {{function|get_entity_glowing}}, {{function|get_entity_silent}},
{{function|set_entity_silent}}, {{function|get_entity_gravity}}, {{function|set_entity_gravity}},
{{function|get_entity_invulnerable}}, {{function|set_entity_invulnerable}}, {{function|get_scoreboard_tags}},
{{function|add_scoreboard_tag}}, {{function|remove_scoreboard_tag}}, {{function|clear_pinv}},
{{function|get_inventory_name}}, {{function|popen_inventory}}, {{function|pinventory_holder}},
{{function|get_inventory_viewers}}, {{function|get_virtual_inventories}}, {{function|create_virtual_inventory}},
{{function|delete_virtual_inventory}}, {{function|set_mob_owner}}, {{function|set_entity_gliding}},
{{function|get_entity_gliding}}, {{function|get_entity_ai}}, {{function|set_entity_ai}}, {{function|display_name}},
{{function|clear_peffects}}, {{function|psneaking}}, {{function|phealth}}, {{function|plast_known_name}},
{{function|stop_sound}}, {{function|stop_named_sound}}, {{function|pcooldown}}, {{function|set_pcooldown}},
{{function|get_pteam}}, {{function|get_vector}}, {{function|distance}}, {{function|get_world_border}}, and
{{function|set_world_border}}
=== Event API Additions ===
10 new events have been added.
block_from_to, block_fade, entity_toggle_glide, firework_explode, entity_regain_health, entity_portal_travel, item_swap,
server_command, broadcast_message, and vehicle_destroy
==3.3.1==
3.3.1 is a culmination of almost 4 years of work. There are hundreds of new functions, and tons of bugfixes and new functionality.
===Update Breakages===
Extensions that worked previously can now only work with the latest builds. All extensions will need to be updated.
=== New feature overview ===
* Closures were added. Many methods require a closure, but you can use closures in custom code as well.
* Smart Strings. Variable interpolation in strings quoted with double quotes, "@likeThis".
* Local Packages. Group your code into logical batches.
* MSLP files. Use the MSLP maker cmdline tool to distribute your code in a single file.
* Operators. Instead of using add(2, 2), use 2 + 2.
* Script optimization. Many backend changes have been made to make your scripts run even faster, with no effort on your part
* Brace Syntax. Use braces in more places: if(@condition){ }, for instance. Makes your code much easier to read.
* Switch statements. Rewrite large chains of if/else if into the better looking switch statement.
* while/dowhile loops. Some loops can be more easily written using these mechanism.
* SQL. Connect to MySQL, SQLite, and PostgreSQL databases.
* Cmdline. Like MethodScript? Use it anywhere! Run scripts from the command line, and do some neat cmdline only things.
* Persistence Network. Store your data in lots of different formats, not just the built in serialization format.
* PN Viewer UI. View your data using a GUI, instead of messing around with command line stuff. Connect to a remote server even, so you can run the GUI on your desktop, and manage your headless server.
* Code Profiler. Profile your code, to find where the slow spots are.
* Byte Arrays. Manage bits and bytes.
* Extensions. Not officially supported yet, but generally quite useful. Add your own functions, or get extensions from other people to extend MethodScript.
* HTTP functions. Connect to a website, and download information from the web, then use it in your application. Allows for SOAP, REST and other web based connections
* Removal of PermGen requirements. No longer will you need to edit your PermGen settings, a new backend is now in use.
* Shell functions. Run other executables on the system.
* Typing. typeof() instanceof() and other methods have been added to allow you to more easily manage your data types.
* // is a line comment. Use the traditional C-style line comment in your code.
* function_exists/event_exists/compile_error. Using these special functions, make your code work with different versions of MethodScript.
* 0b and 0x. Write hex and binary numbers directly in code. 0xF == 0b1111 == 15.
* Well definied array iteration. When adding and removing values while iterating arrays in foreach, they do what you want in more cases.
* Email support. Easily send an email from your scripts with the {{function|email}} function.
* Type hinting. Make sure your variables pick a type and stick with it. Type hinting is now implemented, and will eventually be upgraded into strong typing. int @int = 'not an int'; is now an error.
* Fully supported try/catch blocks. Catch multiple exception types and do different things for each. Finally clauses also supported.
=== API Additions ===
407 new functions have been added:
<<<<<<< HEAD
{{function|add_recipe}}, {{function|add_to_inventory}}, {{function|all_entities}}, {{function|array_deep_clone}}, {{function|array_every}},
{{function|array_filter}}, {{function|array_indexes}}, {{function|array_index}}, {{function|array_insert}}, {{function|array_iterate}},
{{function|array_last_index}}, {{function|array_map}}, {{function|array_rand}}, {{function|array_reduce_right}}, {{function|array_reduce}},
{{function|array_remove_values}}, {{function|array_reverse}}, {{function|array_shallow_clone}}, {{function|array_some}},
{{function|array_sort_async}}, {{function|array_sort}}, {{function|array_unique}}, {{function|associative_array}}, {{function|async_read}},
{{function|ba_as_array}}, {{function|ba_get_bytes}}, {{function|ba_get_byte}}, {{function|ba_get_char}}, {{function|ba_get_double}},
{{function|ba_get_float}}, {{function|ba_get_int}}, {{function|ba_get_long}}, {{function|ba_get_short}}, {{function|ba_get_string}},
{{function|ba_is_little_endian}}, {{function|ba_put_bytes}}, {{function|ba_put_byte}}, {{function|ba_put_char}}, {{function|ba_put_double}},
{{function|ba_put_float}}, {{function|ba_put_int}}, {{function|ba_put_long}}, {{function|ba_put_short}}, {{function|ba_put_string}},
{{function|ba_rewind}}, {{function|ba_set_little_endian}}, {{function|base64_decode}}, {{function|base64_encode}}, {{function|bcrypt}},
{{function|bit_xor}}, {{function|build_date}}, {{function|byte_array}}, {{function|call_proc_array}}, {{function|can_pickup_items}},
{{function|capture_runas}}, {{function|cd}}, {{function|char_from_unicode}}, {{function|check_bcrypt}}, {{function|clear_commands}},
{{function|clear_cron}}, {{function|clear_recipes}}, {{function|clear_screen}}, {{function|clear_task}}, {{function|close_pinv}},
{{function|colorize}}, {{function|comp_read}}, {{function|compile_error}}, {{function|create_objective}}, {{function|create_scoreboard}},
{{function|create_team}}, {{function|create_world}}, {{function|cslice}}, {{function|damage_entity}}, {{function|dowhile}},
{{function|dump_threads}}, {{function|email}}, {{function|enchantment_list}}, {{function|engine_build_date}}, {{function|entities_in_radius}},
{{function|entity_air}}, {{function|entity_can_see}}, {{function|entity_exists}}, {{function|entity_fall_distance}}, {{function|entity_grounded}},
{{function|entity_id}}, {{function|entity_line_of_sight}}, {{function|entity_loc}}, {{function|entity_max_air}}, {{function|entity_onfire}},
{{function|entity_remove}}, {{function|entity_spec}}, {{function|entity_type}}, {{function|entity_uuid}}, {{function|entity_velocity}},
{{function|event_exists}}, {{function|execute}}, {{function|exit}}, {{function|explosion}}, {{function|extension_exists}},
{{function|extension_info}}, {{function|fake_incoming_plugin_message}}, {{function|file_resolve}}, {{function|file_size}},
{{function|foreachelse}}, {{function|forelse}}, {{function|function_exists}}, {{function|generate_tree}}, {{function|get_aliases}},
{{function|get_all_recipes}}, {{function|get_armor_color}}, {{function|get_art_at}}, {{function|get_banned_players}}, {{function|get_biome}},
{{function|get_block_command}}, {{function|get_block_info}}, {{function|get_block_power}}, {{function|get_chunk_loc}},
{{function|get_command_block_name}}, {{function|get_command_block}}, {{function|get_commands}}, {{function|get_difficulty}},
{{function|get_entity_age}}, {{function|get_entity_breedable}}, {{function|get_entity_max_speed}}, {{function|get_entity_persistence}},
{{function|get_entity_rider}}, {{function|get_entity_vehicle}}, {{function|get_env}}, {{function|get_equipment_droprates}},
{{function|get_events}}, {{function|get_functions}}, {{function|get_gamerule}}, {{function|get_highest_block_at}},
{{function|get_inventory_item}}, {{function|get_inventory_size}}, {{function|get_inventory_type}}, {{function|get_inventory}},
{{function|get_ip_bans}}, {{function|get_itemmeta}}, {{function|get_leashholder}}, {{function|get_light_at}}, {{function|get_list_name}},
{{function|get_loaded_chunks}}, {{function|get_locales}}, {{function|get_max_health}}, {{function|get_metadata}}, {{function|get_mob_age}},
{{function|get_mob_effects}}, {{function|get_mob_equipment}}, {{function|get_mob_name}}, {{function|get_name_visible}},
{{function|get_objectives}}, {{function|get_offline_players}}, {{function|get_peffect}}, {{function|get_pflyspeed}}, {{function|get_pitch}},
{{function|get_player_from_entity_id}}, {{function|get_procedures}}, {{function|get_projectile_bounce}}, {{function|get_projectile_shooter}},
{{function|get_pscoreboard}}, {{function|get_pscore}}, {{function|get_pvp}}, {{function|get_pwalkspeed}}, {{function|get_recipe_for}},
{{function|get_registered_channels}}, {{function|get_scoreboards}}, {{function|get_script_environment}}, {{function|get_server_info}},
{{function|get_spawner_type}}, {{function|get_teams}}, {{function|get_temperature}}, {{function|get_terminal_width}},
{{function|get_whitelisted_players}}, {{function|get_worlds}}, {{function|get_yaw}}, {{function|has_bind}}, {{function|has_metadata}},
{{function|has_storm}}, {{function|has_thunder}}, {{function|heap_dump}}, {{function|hmac_md5}}, {{function|hmac_sha1}},
{{function|hmac_sha256}}, {{function|http_clear_session_cookies}}, {{function|http_request}}, {{function|iclosure}}, {{function|ini_decode}},
{{function|ini_encode}}, {{function|instanceof}}, {{function|is_alias}}, {{function|is_block_powered}}, {{function|is_bytearray}},
{{function|is_channel_registered}}, {{function|is_closure}}, {{function|is_entity_living}}, {{function|is_leather_armor}}, {{function|is_number}},
{{function|is_slime_chunk}}, {{function|is_stringable}}, {{function|is_string}}, {{function|json_decode}}, {{function|json_encode}},
{{function|launch_firework}}, {{function|levenshtein}}, {{function|load_chunk}}, {{function|location_shift}}, {{function|logarithm}},
{{function|lsprintf}}, {{function|ls}}, {{function|marquee_stop}}, {{function|marquee}}, {{function|material_info}}, {{function|math_const}},
{{function|monitor_redstone}}, {{function|neg}}, {{function|noop}}, {{function|parse_date}},
{{function|parse_int}}, {{function|pbed_location}}, {{function|penchanting}}, {{function|penderchest}}, {{function|pfirst_played}},
{{function|pget_time}}, {{function|pgive_enderchest_item}}, {{function|phas_flight}}, {{function|phas_played}}, {{function|phas_storm}},
{{function|pheld_slot}}, {{function|phunger}}, {{function|pinv_open}}, {{function|plast_played}}, {{function|play_entity_effect}},
{{function|play_named_sound}}, {{function|play_note}}, {{function|play_sound}}, {{function|players_in_radius}}, {{function|postdec}},
{{function|postinc}}, {{function|preset_time}}, {{function|print_err}}, {{function|print_out}}, {{function|prompt_char}},
{{function|prompt_line}}, {{function|prompt_pass}}, {{function|psaturation}}, {{function|psend_block_change}}, {{function|psend_sign_text}},
{{function|psetop}}, {{function|pspectator_target}}, {{function|ptake_enderchest_item}}, {{function|ptarget_space}}, {{function|puuid}},
{{function|pvehicle_leave}}, {{function|pvehicle}}, {{function|pwd}}, {{function|pworkbench}}, {{function|query_async}}, {{function|query}},
{{function|queue_clear}}, {{function|queue_delay_front}}, {{function|queue_delay}}, {{function|queue_push_front}}, {{function|queue_push}},
{{function|queue_remove_front}}, {{function|queue_remove}}, {{function|queue_running}}, {{function|read_binary}},
{{function|read_gzip_binary}}, {{function|read_pipe_input}}, {{function|ref_equals}}, {{function|reflect_docs}}, {{function|reflect_pull}},
{{function|reflect_value_source}}, {{function|reg_escape}}, {{function|regen_chunk}}, {{function|register_channel}},
{{function|register_command}}, {{function|remove_metadata}}, {{function|remove_objective}}, {{function|remove_scoreboard}},
{{function|remove_team}}, {{function|res_create_resource}}, {{function|res_free_resource}}, {{function|reset_all_pscores}},
{{function|reset_recipes}}, {{function|run_cmd}}, {{function|save_players}}, {{function|save_world}}, {{function|send_plugin_message}},
{{function|send_resourcepack}}, {{function|send_texturepack}}, {{function|sequals_ic}}, {{function|set_armor_color}}, {{function|set_art_at}},
{{function|set_biome}}, {{function|set_block_command}}, {{function|set_can_pickup_items}}, {{function|set_cmdline_prompt}},
{{function|set_command_block_name}}, {{function|set_cron}}, {{function|set_difficulty}}, {{function|set_entity_age}}, {{function|set_entity_air}},
{{function|set_entity_breedable}}, {{function|set_entity_fall_distance}}, {{function|set_entity_loc}}, {{function|set_entity_max_air}},
{{function|set_entity_max_speed}}, {{function|set_entity_onfire}}, {{function|set_entity_persistence}}, {{function|set_entity_rider}},
{{function|set_entity_spec}}, {{function|set_entity_velocity}}, {{function|set_env}}, {{function|set_equipment_droprates}},
{{function|set_executor}}, {{function|set_gamerule}}, {{function|set_interval}}, {{function|set_inventory_item}}, {{function|set_inventory}},
{{function|set_ip_banned}}, {{function|set_itemmeta}}, {{function|set_leashholder}}, {{function|set_list_name}}, {{function|set_max_health}},
{{function|set_metadata}}, {{function|set_mob_age}}, {{function|set_mob_effect}}, {{function|set_mob_equipment}}, {{function|set_mob_name}},
{{function|set_name_visible}}, {{function|set_objective_display}}, {{function|set_pbed_location}}, {{function|set_penderchest}},
{{function|set_pflight}}, {{function|set_pflying}}, {{function|set_pflyspeed}}, {{function|set_pheld_slot}}, {{function|set_phunger}},
{{function|set_projectile_bounce}}, {{function|set_projectile_shooter}}, {{function|set_psaturation}}, {{function|set_pscoreboard}},
{{function|set_pscore}}, {{function|set_pspectator_target}}, {{function|set_pstorm}}, {{function|set_ptime}}, {{function|set_pvelocity}},
{{function|set_pvp}}, {{function|set_pwalkspeed}}, {{function|set_spawner_type}}, {{function|set_spawn}}, {{function|set_tabcompleter}},
{{function|set_team_display}}, {{function|set_team_options}}, {{function|set_thunder}}, {{function|set_timeout}},
{{function|set_uncaught_exception_handler}}, {{function|sha256}}, {{function|shell_adv}}, {{function|shell}}, {{function|shoot_projectile}},
{{function|show_enderchest}}, {{function|shutdown_server}}, {{function|simple_date}}, {{function|snequals}},
{{function|spawn_entity}}, {{function|spawn_falling_block}}, {{function|split}}, {{function|sprintf}}, {{function|string_append}},
{{function|string_from_bytes}}, {{function|string_get_bytes}}, {{function|string_position}}, {{function|sudo}}, {{function|sys_beep}},
{{function|sys_err}}, {{function|sys_out}}, {{function|sys_properties}}, {{function|take_from_inventory}}, {{function|team_add_player}},
{{function|team_remove_player}}, {{function|to_radix}}, {{function|trace}},
{{function|triml}}, {{function|trimr}}, {{function|typeof}}, {{function|unicode_from_char}}, {{function|unload_chunk}},
{{function|unload_world}}, {{function|unregister_channel}}, {{function|unregister_command}}, {{function|unsafe_query}},
{{function|url_decode}}, {{function|url_encode}}, {{function|user}}, {{function|while}}, {{function|world_info}},
{{function|x_get_current_thread}}, {{function|x_new_thread}}, {{function|x_run_on_main_thread_later}}, {{function|x_run_on_main_thread_now}},
=======
{{function|add_recipe}}, {{function|add_to_inventory}}, {{function|all_entities}}, {{function|array_deep_clone}}, {{function|array_every}},
{{function|array_filter}}, {{function|array_indexes}}, {{function|array_index}}, {{function|array_insert}}, {{function|array_iterate}},
{{function|array_last_index}}, {{function|array_map}}, {{function|array_rand}}, {{function|array_reduce_right}}, {{function|array_reduce}},
{{function|array_remove_values}}, {{function|array_reverse}}, {{function|array_shallow_clone}}, {{function|array_some}},
{{function|array_sort_async}}, {{function|array_sort}}, {{function|array_unique}}, {{function|associative_array}}, {{function|async_read}},
{{function|ba_as_array}}, {{function|ba_get_bytes}}, {{function|ba_get_byte}}, {{function|ba_get_char}}, {{function|ba_get_double}},
{{function|ba_get_float}}, {{function|ba_get_int}}, {{function|ba_get_long}}, {{function|ba_get_short}}, {{function|ba_get_string}},
{{function|ba_is_little_endian}}, {{function|ba_put_bytes}}, {{function|ba_put_byte}}, {{function|ba_put_char}}, {{function|ba_put_double}},
{{function|ba_put_float}}, {{function|ba_put_int}}, {{function|ba_put_long}}, {{function|ba_put_short}}, {{function|ba_put_string}},
{{function|ba_rewind}}, {{function|ba_set_little_endian}}, {{function|base64_decode}}, {{function|base64_encode}}, {{function|bcrypt}},
{{function|bit_xor}}, {{function|build_date}}, {{function|byte_array}}, {{function|call_proc_array}}, {{function|can_pickup_items}},
{{function|capture_runas}}, {{function|cd}}, {{function|char_from_unicode}}, {{function|check_bcrypt}}, {{function|clear_commands}},
{{function|clear_cron}}, {{function|clear_recipes}}, {{function|clear_screen}}, {{function|clear_task}}, {{function|close_pinv}},
{{function|colorize}}, {{function|comp_read}}, {{function|compile_error}}, {{function|create_objective}}, {{function|create_scoreboard}},
{{function|create_team}}, {{function|create_world}}, {{function|cslice}}, {{function|damage_entity}}, {{function|dowhile}},
{{function|dump_threads}}, {{function|email}}, {{function|enchantment_list}}, {{function|engine_build_date}}, {{function|entities_in_radius}},
{{function|entity_air}}, {{function|entity_can_see}}, {{function|entity_exists}}, {{function|entity_fall_distance}}, {{function|entity_grounded}},
entity_id, {{function|entity_line_of_sight}}, {{function|entity_loc}}, {{function|entity_max_air}}, {{function|entity_onfire}},
{{function|entity_remove}}, {{function|entity_spec}}, {{function|entity_type}}, entity_uuid, {{function|entity_velocity}},
{{function|event_exists}}, {{function|execute}}, {{function|exit}}, {{function|explosion}}, {{function|extension_exists}},
{{function|extension_info}}, {{function|fake_incoming_plugin_message}}, {{function|file_resolve}}, {{function|file_size}},
{{function|foreachelse}}, {{function|forelse}}, {{function|function_exists}}, {{function|generate_tree}}, {{function|get_aliases}},
{{function|get_all_recipes}}, {{function|get_armor_color}}, {{function|get_art_at}}, {{function|get_banned_players}}, {{function|get_biome}},
{{function|get_block_command}}, {{function|get_block_info}}, {{function|get_block_power}}, {{function|get_chunk_loc}},
{{function|get_command_block_name}}, {{function|get_command_block}}, {{function|get_commands}}, {{function|get_difficulty}},
{{function|get_entity_age}}, {{function|get_entity_breedable}}, {{function|get_entity_max_speed}}, {{function|get_entity_persistence}},
{{function|get_entity_rider}}, {{function|get_entity_vehicle}}, {{function|get_env}}, {{function|get_equipment_droprates}},
{{function|get_events}}, {{function|get_functions}}, {{function|get_gamerule}}, {{function|get_highest_block_at}},
{{function|get_inventory_item}}, {{function|get_inventory_size}}, {{function|get_inventory_type}}, {{function|get_inventory}},
{{function|get_ip_bans}}, {{function|get_itemmeta}}, {{function|get_leashholder}}, {{function|get_light_at}}, {{function|get_list_name}},
{{function|get_loaded_chunks}}, {{function|get_locales}}, {{function|get_max_health}}, {{function|get_metadata}}, {{function|get_mob_age}},
{{function|get_mob_effects}}, {{function|get_mob_equipment}}, {{function|get_mob_name}}, {{function|get_name_visible}},
{{function|get_objectives}}, {{function|get_offline_players}}, {{function|get_peffect}}, {{function|get_pflyspeed}}, {{function|get_pitch}},
get_player_from_entity_id, {{function|get_procedures}}, {{function|get_projectile_bounce}}, {{function|get_projectile_shooter}},
{{function|get_pscoreboard}}, {{function|get_pscore}}, {{function|get_pvp}}, {{function|get_pwalkspeed}}, get_recipe_for,
{{function|get_registered_channels}}, {{function|get_scoreboards}}, {{function|get_script_environment}}, {{function|get_server_info}},
{{function|get_spawner_type}}, {{function|get_teams}}, {{function|get_temperature}}, {{function|get_terminal_width}},
{{function|get_whitelisted_players}}, {{function|get_worlds}}, {{function|get_yaw}}, {{function|has_bind}}, {{function|has_metadata}},
{{function|has_storm}}, {{function|has_thunder}}, {{function|heap_dump}}, {{function|hmac_md5}}, {{function|hmac_sha1}},
{{function|hmac_sha256}}, {{function|http_clear_session_cookies}}, {{function|http_request}}, {{function|iclosure}}, {{function|ini_decode}},
{{function|ini_encode}}, {{function|instanceof}}, {{function|is_alias}}, {{function|is_block_powered}}, {{function|is_bytearray}},
{{function|is_channel_registered}}, {{function|is_closure}}, {{function|is_entity_living}}, {{function|is_leather_armor}}, {{function|is_number}},
{{function|is_slime_chunk}}, {{function|is_stringable}}, {{function|is_string}}, {{function|json_decode}}, {{function|json_encode}},
{{function|launch_firework}}, {{function|levenshtein}}, {{function|load_chunk}}, {{function|location_shift}}, {{function|logarithm}},
{{function|lsprintf}}, {{function|ls}}, {{function|marquee_stop}}, {{function|marquee}}, {{function|material_info}}, {{function|math_const}},
{{function|monitor_redstone}}, {{function|neg}}, {{function|noop}}, {{function|parse_date}},
{{function|parse_int}}, {{function|pbed_location}}, {{function|penchanting}}, {{function|penderchest}}, {{function|pfirst_played}},
{{function|pget_time}}, {{function|pgive_enderchest_item}}, {{function|phas_flight}}, {{function|phas_played}}, {{function|phas_storm}},
{{function|pheld_slot}}, {{function|phunger}}, {{function|pinv_open}}, {{function|plast_played}}, {{function|play_entity_effect}},
{{function|play_named_sound}}, {{function|play_note}}, {{function|play_sound}}, {{function|players_in_radius}}, {{function|postdec}},
{{function|postinc}}, {{function|preset_time}}, {{function|print_err}}, {{function|print_out}}, {{function|prompt_char}},
{{function|prompt_line}}, {{function|prompt_pass}}, {{function|psaturation}}, {{function|psend_block_change}}, {{function|psend_sign_text}},
{{function|psetop}}, {{function|pspectator_target}}, {{function|ptake_enderchest_item}}, {{function|ptarget_space}}, {{function|puuid}},
{{function|pvehicle_leave}}, {{function|pvehicle}}, {{function|pwd}}, {{function|pworkbench}}, {{function|query_async}}, {{function|query}},
{{function|queue_clear}}, {{function|queue_delay_front}}, {{function|queue_delay}}, {{function|queue_push_front}}, {{function|queue_push}},
{{function|queue_remove_front}}, {{function|queue_remove}}, {{function|queue_running}}, {{function|read_binary}},
{{function|read_gzip_binary}}, {{function|read_pipe_input}}, {{function|ref_equals}}, {{function|reflect_docs}}, {{function|reflect_pull}},
{{function|reflect_value_source}}, {{function|reg_escape}}, {{function|regen_chunk}}, {{function|register_channel}},
{{function|register_command}}, {{function|remove_metadata}}, {{function|remove_objective}}, {{function|remove_scoreboard}},
{{function|remove_team}}, {{function|res_create_resource}}, {{function|res_free_resource}}, {{function|reset_all_pscores}},
{{function|reset_recipes}}, {{function|run_cmd}}, {{function|save_players}}, {{function|save_world}}, {{function|send_plugin_message}},
{{function|send_resourcepack}}, send_texturepack, {{function|sequals_ic}}, {{function|set_armor_color}}, {{function|set_art_at}},
{{function|set_biome}}, {{function|set_block_command}}, {{function|set_can_pickup_items}}, {{function|set_cmdline_prompt}},
{{function|set_command_block_name}}, {{function|set_cron}}, {{function|set_difficulty}}, {{function|set_entity_age}}, {{function|set_entity_air}},
{{function|set_entity_breedable}}, {{function|set_entity_fall_distance}}, {{function|set_entity_loc}}, {{function|set_entity_max_air}},
{{function|set_entity_max_speed}}, {{function|set_entity_onfire}}, {{function|set_entity_persistence}}, {{function|set_entity_rider}},
{{function|set_entity_spec}}, {{function|set_entity_velocity}}, {{function|set_env}}, {{function|set_equipment_droprates}},
{{function|set_executor}}, {{function|set_gamerule}}, {{function|set_interval}}, {{function|set_inventory_item}}, {{function|set_inventory}},
{{function|set_ip_banned}}, {{function|set_itemmeta}}, {{function|set_leashholder}}, {{function|set_list_name}}, {{function|set_max_health}},
{{function|set_metadata}}, {{function|set_mob_age}}, {{function|set_mob_effect}}, {{function|set_mob_equipment}}, {{function|set_mob_name}},
{{function|set_name_visible}}, {{function|set_objective_display}}, {{function|set_pbed_location}}, {{function|set_penderchest}},
{{function|set_pflight}}, {{function|set_pflying}}, {{function|set_pflyspeed}}, {{function|set_pheld_slot}}, {{function|set_phunger}},
{{function|set_projectile_bounce}}, {{function|set_projectile_shooter}}, {{function|set_psaturation}}, {{function|set_pscoreboard}},
{{function|set_pscore}}, {{function|set_pspectator_target}}, {{function|set_pstorm}}, {{function|set_ptime}}, {{function|set_pvelocity}},
{{function|set_pvp}}, {{function|set_pwalkspeed}}, {{function|set_spawner_type}}, {{function|set_spawn}}, {{function|set_tabcompleter}},
{{function|set_team_display}}, {{function|set_team_options}}, {{function|set_thunder}}, {{function|set_timeout}},
{{function|set_uncaught_exception_handler}}, {{function|sha256}}, {{function|shell_adv}}, {{function|shell}}, {{function|shoot_projectile}},
{{function|show_enderchest}}, {{function|shutdown_server}}, {{function|simple_date}}, {{function|snequals}},
{{function|spawn_entity}}, {{function|spawn_falling_block}}, {{function|split}}, {{function|sprintf}}, {{function|string_append}},
{{function|string_from_bytes}}, {{function|string_get_bytes}}, {{function|string_position}}, {{function|sudo}}, {{function|sys_beep}},
{{function|sys_err}}, {{function|sys_out}}, {{function|sys_properties}}, {{function|take_from_inventory}}, {{function|team_add_player}},
{{function|team_remove_player}}, {{function|to_radix}}, {{function|trace}},
{{function|triml}}, {{function|trimr}}, {{function|typeof}}, {{function|unicode_from_char}}, {{function|unload_chunk}},
{{function|unload_world}}, {{function|unregister_channel}}, {{function|unregister_command}}, {{function|unsafe_query}},
{{function|url_decode}}, {{function|url_encode}}, {{function|user}}, {{function|while}}, {{function|world_info}},
{{function|x_get_current_thread}}, {{function|x_new_thread}}, {{function|x_run_on_main_thread_later}}, {{function|x_run_on_main_thread_now}},
>>>>>>> master
{{function|xml_read}}, {{function|yml_decode}}, and {{function|yml_encode}}
===Event API additions===
76 events were added.
creature_spawn, block_grow, food_level_changed, world_save, entity_interact, block_dispense, entity_change_block, item_despawn,
inventory_click, vehicle_move, block_break, exp_change, note_play, shutdown, cmdline_prompt_input, player_interact_at_entity,
player_leave_bed, block_ignite, world_load, item_pre_enchant, entity_death, item_enchant, world_unload, projectile_hit, item_held,
player_quit, player_move, item_drop, tree_grow, weather_change, entity_damage_player, entity_damage, block_place, world_changed,
player_toggle_sneak, projectile_launch, player_fish, server_ping, entity_explode, player_prelogin, inventory_close, lightning_strike,
player_teleport, redstone_changed, inventory_drag, target_player, player_enter_bed, item_pickup, player_interact_entity, block_burn,
vehicle_leave, vehicle_collide, thunder_change, gamemode_change, async_player_chat, item_pre_craft, piston_retract,
player_toggle_flight, tab_complete_chat, pressure_plate_activated, inventory_open, player_login, vehicle_enter, player_command,
player_consume, player_kick, tab_complete_command, sign_changed, piston_extend, entity_enter_portal, player_portal_travel,
player_toggle_sprint, item_spawn, hanging_break, book_edited, and plugin_message_received
==3.3.0==
3.3.0 is a massive update that contains a huge number of new features. There are a few things that are incompatible with the previous version, so you should carefully read this release notice before upgrading. If you are starting from scratch, there are (of course) no incompatibilities.
===Update Breakages===
* include/read now require paths that are relative to the location of the current file. This should be an easy fix.
* Your persistance database is in the wrong format. Unlike previous versions, you do not need to delete the database, you simply need to upgrade it. (Unless you're upgrading from before 3.2.0, in which case you still do need to delete the persistence.ser file, and then you're set.) If you have not used user aliases or persistence in the past, this step is unnecessary. Rename/copy/symlink your bukkit jar to bukkit.jar for this to work. From a command prompt, change to the plugins directory and run <code>java -jar CommandHelper.jar --manager</code>. This will launch the Data Manager, at which point you can run the upgrade command. Once this is complete, your data is now converted to the new format! Do not run the data manager while your server is up. In lieu of this, you may also simply delete your persistance.ser file, in which case all data will be lost, but it will re-create the db in the correct format in the future, without any interaction from you. Be sure to check out the other features in the data manager while you're there!
* is_* ({{function|is_null}}, {{function|is_integer}}, etc) functions are slightly altered. Most people weren't using these functions, but if you were, you will want to check the API for information on the changes to this function.
* {{function|pinv}} and {{function|set_pinv}} take different formatted arguments. Check the API for the new usage.
* play-dirty mode is currently broken due to the new event system implementation. This will be fixed at a later date, but you may not need it any more, since plugins have all been updated now.
===New Feature Overview===
* Colors work in the terminal now. The exception is if you're on a windows machine, in which case, no colors for you :( sorry. Also, CH has a cool new splash screen (you can disable it in the preferences).
* Data Manager - You can now view the persistence data much easier, thanks to the data manager. Be sure to explore all the options. Read up on it at the [[Data_Manager|page on the data manager]].
* Abstraction layer - While you won't see this directly, know that it's much easier to move CH from server type to server type, should bukkit or whatever other server mod become obsolete. This means that CH should live on past server mods, with your scripts safe from the changes!
* Namespaces in persistence, and improved performance in persistence - Persistence is now much more efficient. In addition, namespace support has been implemented. If you namespace your data using periods, you can much more easily manipulate the data that has been stored. Be sure to re-read the API in the Persistance section, as all the functions have new features now.
* Events added - Events are now here! Read up on the [[Events|Events overview]] for basic information relating to all events, and check out the [[Event_API|Event API]] for details on specific events, as well as what events are available. This list will continue to grow as more events are added!
* ifelse and switch - Now it is much easier to chain if statements. Check out the [[Logic#ifelse()|wiki page on logic]] for more information.
* Arrays are associative - Now you can store a value in an array not only with a numeric index, but you can also use strings! Many functions now use this feature, since it's much easier to read and use, but you need to be familiar with the changes for them to make sense. Check out the additional section in the wiki page [[Arrays|on arrays]]
* bitwise operations - binary operations! Check the API page for details.
* Basic crypto functions - If you need to hash things, this is now possible.
* import/export - Import and export work like the persistence functions, except they are in-memory only, and won't survive past server restarts (or /reloadaliases, for that matter). There are two modes of operation, so read the API carefully if you use these functions.
* More defined data types, in addition to casting and converting functions - Data types were loosely defined before. Now the definition is well defined, and there are functions to help you manipulate this data.
* Enchantment api - You can now control enchantments in a player's inventory
* Sign api - Change the text of signs with functions! This function allows you to colorize the text on the sign as well, when used in combination with the color() function.
* More math functions - Just about every math operation you could need is now implemented. Be sure to also check out the very cool expr() function, which should simplify complicated math formulas.
* Basic entity control - You can now control entity health and tame wolves. This is just the first phase of more complex entity controls.
* scriptas and has_permission - scriptas() allows you to run scripts as another player, similarly to how you can run a command as another player with runas(). has_permission() allows you to dynamically check to see if a player has an arbitrary permission or not.
* data_name (reverse data_values)
* More inventory controls - Previous versions had pinv and set_pinv, and that was all the control you needed to do whatever you like, but it is unwieldy, and complicated to use. These functions arguments have changed as well, but you can now use a few other functions to more easily do things: phas_item, pitem_slot, pgive_item, ptake_item. Check out the API for more information for each of these functions.
* World time controls - Control the time in a world with the new world time functions.
===API additions===
Here's a full list of all the new functions. Check out the API for details on each:
* {{function|array_contains_ic}}
* {{function|array_implode}}
* {{function|array_keys}}
* {{function|array_merge}}
* {{function|array_normalize}}
* {{function|array_remove}}
* {{function|bit_and}}
* {{function|bit_not}}
* {{function|bit_or}}
* {{function|ifelse}}
* {{function|lshift}}
* {{function|nand}}
* {{function|nequals}}
* {{function|nequals_ic}}
* {{function|nor}}
* {{function|rshift}}
* {{function|sequals}}
* {{function|switch}}
* {{function|urshift}}
* {{function|xnor}}
* {{function|xor}}
* {{function|md5}}
* {{function|rot13}}
* {{function|sha1}}
* {{function|boolean}}
* {{function|double}}
* {{function|export}}
* {{function|import}}
* {{function|integer}}
* {{function|is_associative}}
* {{function|is_integral}}
* {{function|is_numeric}}
* {{function|string}}
* {{function|debug}}
* {{function|strip_colors}}
* {{function|can_enchant_target}}
* {{function|enchant_inv}}
* {{function|enchant_rm_inv}}
* {{function|get_enchant_inv}}
* {{function|get_enchant_max}}
* {{function|get_enchants}}
* {{function|is_enchantment}}
* {{function|break_block}}
* {{function|get_sign_text}}
* {{function|is_sign_at}}
* {{function|set_sign_text}}
* {{function|bind}}
* {{function|cancel}}
* {{function|consume}}
* {{function|dump_events}}
* {{function|event_meta}}
* {{function|is_cancelled}}
* {{function|is_consumed}}
* {{function|is_locked}}
* {{function|lock}}
* {{function|modify_event}}
* {{function|trigger}}
* {{function|unbind}}
* {{function|acos}}
* {{function|asin}}
* {{function|atan}}
* {{function|atan2}}
* {{function|cos}}
* {{function|expr}}
* {{function|round}}
* {{function|sin}}
* {{function|tan}}
* {{function|to_degrees}}
* {{function|to_radians}}
* {{function|get_cmd}}
* {{function|has_permission}}
* {{function|scriptas}}
* {{function|data_name}}
* {{function|get_entity_health}}
* {{function|get_mob_owner}}
* {{function|is_tameable}}
* {{function|max_stack_size}}
* {{function|set_entity_health}}
* {{function|tame_mob}}
* {{function|enable_performance_logging}}
* {{function|clear_value}}
* {{function|get_values}}
* {{function|get_compass_target}}
* {{function|give_pexp}}
* {{function|pbanned}}
* {{function|pgive_item}}
* {{function|phas_item}}
* {{function|pisop}}
* {{function|pitem_slot}}
* {{function|ponfire}}
* {{function|ponline}}
* {{function|ptake_item}}
* {{function|pwhitelisted}}
* {{function|set_compass_target}}
* {{function|set_pbanned}}
* {{function|set_peffect}}
* {{function|set_ponfire}}
* {{function|set_pwhitelisted}}
* {{function|get_spawn}}
* {{function|get_world_time}}
* {{function|refresh_chunk}}
* {{function|set_world_time}}
==3.2.0==
* Player's pitch and yaw (the way they're facing) is preserved when using set_ploc
* Fixed a bug when dealing with offline players in pinfo (as well as a few other functions)
* substr() now works properly if the last argument is left off
* When using an ivar as the second parameter in assign(), it works properly now.
* Added [[Interpreter_Mode|interpreter mode]]!
* Added user defined procedures
* read() and include() are subject to the base-dir restriction now
* %%NOWIKI|#%% comments work even if they aren't the first character on the line. C style block comments are also available. %%NOWIKI|/* */%%
* Commands can be run from the console. If the command doesn't make sense to run without a player, the command should fail gracefully.
* Added include and procedures. See [[Procedures|this page]] for more details.
* Potion Effects can now be accessed with set_peffect. See [http://www.minecraftwiki.net/wiki/Potion_effects the guide] on the minecraft wiki for ID numbers and other information
* Added case-sensitive option to make it possible to toggle command matching being case sensitive or not
* [[Arrays|Arrays]] are much more flexible now
* The \u escape sequence is implemented in the lexer. This allows insertion of arbitrary unicode characters into scripts.
* The WG/WE series of functions are implemented now
* Added functions: sqrt, include, proc, return, pinv, set_pinv, min, max, is_proc, call_proc, pexp/set_pexp (experimental), ptexp/set_ptexp (experimental), plevel/set_plevel (experimental), pmode/set_pmode, set_peffect (requires CraftBukkit), array_resize, range, Economy Functions, call_alias, item_drop, set_phealth, equals_ic, sk_all_regions, sk_pos1, sk_pos2, sk_region_info, sk_region_overlaps
==3.1.2==
<<<<<<< HEAD
* Added exception handling, and fixed more bugs with command matching and
optional variables. Also added more advanced permission syntax for commands.
* Added functions: set_display_name, reset_display_name, try, array_index_exists,
is_array, is_boolean, is_double, is_integer, is_null, is_string, substr, to_lower,
to_upper, length, throw
*msg() and all other applicable Echoes functions now handle newlines and linebreaks properly. Besides being able to use a \n character to mean a newline character, word wrapping now occurs at word boundaries instead of arbitrarily. Thanks to Reil for the code to do that! Also, if a file is read in with read(), and it has newlines in it, newline characters are passed through to the other functions properly.
*Permissions handling just got easier. In addition to being able to label a command, and giving that group/user permission to commandhelper.alias.label, you can give groups permissions to certain commands by doing:
=======
* Added exception handling, and fixed more bugs with command matching and optional variables. Also added more advanced permission syntax for commands.
* Added functions: set_display_name, reset_display_name, try, array_index_exists, is_array, is_boolean, is_double, is_integer, is_null, is_string, substr, to_lower,to_upper, length, throw
* msg() and all other applicable Echoes functions now handle newlines and linebreaks properly. Besides being able to use a \n character to mean a newline character, word wrapping now occurs at word boundaries instead of arbitrarily. Thanks to Reil for the code to do that! Also, if a file is read in with read(), and it has newlines in it, newline characters are passed through to the other functions properly.
* Permissions handling just got easier. In addition to being able to label a command, and giving that group/user permission to commandhelper.alias.label, you can give groups permissions to certain commands by doing:
>>>>>>> master
<pre>
~admin:/adminOnlyCommand = msg('This is an admin only command')
</pre>
In addition, you can give multiple groups permission, in one go, like this:
<pre>
~admin/mods:/adminOrModCommand = msg('This is an admin or mods command')
</pre>
Further, you can ''revoke'' permissions by putting a dash in front, like so:
<pre>
~-default:/normallyAbleToUseCommand = ...
</pre>
Note that permissions take priority from left to right. So, say that a user is in the 'mods' and 'builder' groups. If the setup were in this order: ~mods/-builder, then the user would have permission, but if it were ~-builder/mods, they would not. If the user is not in one of the listed groups, that group name is ignored.
* Checking that you are passing the correct number of arguments to a function is now done at compile time. This will potentially help reduce the numbers of errors in a script.
==3.1.1==
*Fixed a bug where no argument functions in the root of the command would give a compile error.
==3.1.0==
* Added several new functions, including eval, set_ploc, time, nano_time, break, continue, get_worlds, pworld, pinfo, and kick. Also, reorganized the source code, and made it so that if one command would cause a compiler error, the entire script won't be affected, but just the one command. Also, concatenation automatically happens now, the g() function is no longer necessary. Debug mode now outputs what real command is being run, if debug mode is on. It is now possible to define the location of your config file, in the preferences.txt file. See the [[Upgrade Notices|upgrade notices]] for information about upgrading your scripts from 3.0.2 to 3.1.0.
* Compiler re-organized and modified. The g() function is no longer necessary, but is still defined, so scripts will remain backwards compatible. Also, scripts with compiler errors will most likely only break the individual command that has the error, the entire script will no longer fail. Of course if the compiler can't determine where the end of the command is (for instance a missing multiline end symbol) more of the script will fail. The sconcat() function is no longer necessary. Let's look at the following code:
<pre>
/cmd = if(boolean, /run this command, /else run this command)
</pre>
<<<<<<< HEAD
In previous versions, you had to group the "if" and "else" portions seperately, in this case, you would likely have used sconcat() though g() would have worked. Now, the commas separate the arguments, with tokens between commas automatically being sconcatenated together.
*The compiler for the scripting language has been broken out of the CommandHelper core. The language itself is now called MScript, and CommandHelper simply hooks into MScript to generate commands to run. This allows me to more easily add other events in the future. Also, in future versions, I will make it so that other plugin authors can hook into MScript to allow their plugins to run MScripts, so that plugin authors can give users more control over the plugin, when applicable. Let's look at the structure of an alias again:
=======
In previous versions, you had to group the "if" and "else" portions separately, in this case, you would likely have used sconcat() though g() would have worked. Now, the commas separate the arguments, with tokens between commas automatically being sconcatenated together.
* The compiler for the scripting language has been broken out of the CommandHelper core. The language itself is now called MScript, and CommandHelper simply hooks into MScript to generate commands to run. This allows me to more easily add other events in the future. Also, in future versions, I will make it so that other plugin authors can hook into MScript to allow their plugins to run MScripts, so that plugin authors can give users more control over the plugin, when applicable. Let's look at the structure of an alias again:
>>>>>>> master
<pre>
/alias command name and $variables = MScript \ MScript \ MScript
</pre>
The portions of an alias that are actually part of the MScript language are shown. All other parts are simply identifiers for CommandHelper specifically. While there is still a great deal of integration with the alias engine, the MScript portions can now be used standalone in future applications.
* eval() functions are now available. As implied, eval() allows arbitrary MScript to be executed.
* Debug mode now outputs what real command is being run, if debug mode is set to true
* You can now define the name/location of your config file. In the preferences.txt file, the script-name property defines this value.
==3.0.2==
<<<<<<< HEAD
*Added new functions to allow scripts to interact with the environment around the player.
==3.0.1==
*Added several new functions, including a foreach loop, and the g function. See the [[Upgrade Notices|upgrade notices]] for information about upgrading your scripts from 3.0.0 to 3.0.1.
==3.0.0==
*Completly reworked the engine. Essentially a new plugin.
==2.0.1==
*Updated to work again.
=======
* Added new functions to allow scripts to interact with the environment around the player.
==3.0.1==
* Added several new functions, including a foreach loop, and the g function. See the [[Upgrade_Notices|upgrade notices]] for information about upgrading your scripts from 3.0.0 to 3.0.1.
==3.0.0==
* Completely reworked the engine. Essentially a new plugin.
==2.0.1==
* Updated to work again.
>>>>>>> master
==2.0==
* Updated for Bukkit.