ouAuAuo
本帖最后由 mimimis 于 2017-9-10 13:34 编辑 % b. M$ v$ @) @1 A
# b3 w' J( v! r$ d5 A" h: }
总引
! m2 E0 R$ w+ {! F) f
一、教程前话


; ^$ u& p% Z9 V1、楼主废言:
2 x. y! G* D+ U( I5 R; U ——
DeluxeMenus是一款不错的菜单插件,它拥有更多的特殊功能,比如(左键/右键)判定,可视化的点击等等,这次写的这篇教程,虽然不能算是优秀,但是也能够帮助更多人来认识、使用、理解这款插件!如果帖子中有什么不对,错误的地方,可以回复帮忙修正!谢谢!: y) m1 Z; J% z/ G$ l0 [9 w2 H: J3 @
5 V2 \6 V& X* C, ]5 r0 ?9 Q6 m

7 U" d& G1 d( p8 W# N& @
2、相关链接:
3 Z6 }- K! M7 Z& H' i9 V9 E4 m8 A8 n1 X- n2 U1 H$ G2 V  i

& A) U; B2 z- j
3、帖子指引:
. ^; H/ O* f5 F, ^$ s* ~
[0]总引
一、教程前话
[1]初步认识DeluxeMenus
一、认识DeluxeMenus
二、开始创建菜单
三、认识配置文件
四、优先级
* y. H, O: ^" N3 v$ K9 }) k2 I- @; |五、前提限制2 J3 v' r. ~* e5 K( f
[2]实战练习
一、左键|右键 类型指令
二、出售/回收 商店的运用
三、每日礼包
[完]终
一、鸣谢
二、统计

. }1 Z8 I5 t: d9 X" T

& w' W9 H& A# A1 X' j$ V) B

( s8 b& t4 v5 d( ~' V" c觉得帖子写得不错?
2 L5 f! y6 T" z0 m# p5 _点我收藏

, O) q, k5 Q1 E: @
. j6 w, V2 n/ n8 s


& [7 ^, Z2 m' w! ?  f: q3 g: \4 e
一章:初步认识DeluxeMenus
1 |7 q6 k- O0 J6 z6 E" r6 g3 C
7 Q  H( l; m* O; {2 U
一、认识DeluxeMenus


1、简介
) t8 M$ J8 F; M3 i* @. A
—— DeluxeMenus菜单(以下简称DM)是一款功能强大的菜单GUI插件,它能够让你制作一个可供玩家编辑的GUI界面菜单(与BossShop、CC等相似),然而它比其他的菜单插件有着突出的优点!
: X/ F' T3 @4 t- ?/ W& ~+ p% ~- M, Q, z" t; Q9 Y7 w
左键/右键 点击项目不同效果[√]
! [& V9 i4 Z  G6 n/ ^) L支持前置PlaceholderAPI(变量前置)来使用更多的变量[√]+ ?9 m7 L2 D. ?: F" K
可视化的鉴定(比如当玩家拥有什么条件时候才可以干嘛等等)[√]
0 W1 s; l3 g0 p* H2 e: i动态的标题[√] 新版本已移除
5 }& p$ r3 k+ L3 _延迟的指令[√]
& s, E8 b; o5 N, g多类型的指令[√]
+ q! {) S$ x% q& [# I6 ^$ o- d
等等...+ C" [1 L- J  J

2、运行环境2 I3 E' K, @. Z

版本:1.4.7~1.11
* O4 R$ A2 S$ E& R$ J0 D. R' k所需前置:PlaceholderAPI(可选)、其他插件0 m2 A* R8 H" F
插件最新版本:1.8.0
3 C4 k$ J( D$ F2 n/ S! I  t( t
3、指令
& O: i* U! q- P! P4 C  f4 G

6 }9 z3 F3 p+ O. e
/dm open <菜单名字> (玩家名字) | 让某玩家打开某菜单) W, [; g# l% P# r- `# ~$ N! P
/dm list | 列出所有菜单8 ~& k8 Y2 \6 E# \
/dm reload | 重启插件
9 `+ Y9 p9 h: c: {
4、权限
6 }6 K7 R7 j; |% o
deluxemenus.admin | 插件的全部权限
- S( G4 g/ p5 z5 f0 |deluxemenus.open | 是否允许使用指令/dm open <菜单名字>来打开菜单
6 ^2 O! E& N% ]- C# I5 P  |deluxemenus.open.others | 是否允许用指令/dm open <菜单名字> (玩家名字) 给一个玩家打开菜单2 v# N6 X3 \( s. k% u: I
deluxemenus.open.bypass | 是否允许没有权限可以打开设置权限了的菜单' h" c) F' m2 E' W2 a& I
deluxemenus.menu.* | 所有菜单的使用权限# K) _, K( f: q( e1 ]
deluxemenus.openrequirement.bypass.* | 打开菜单无视所有条件就能够打开
) K- v! i4 a4 O9 T0 H% M% K

5、变量
5 R! w4 z& Q" ^
变量前置为
PlaceholderAPI
9 j/ K; s8 Z5 A/ _' y变量大全戳我(来自插件百科)
& \, t1 n* r5 z$ F& ?1 F2 D. L, k: g. ^
下载完成后安装插件,下载完成后下载对应的变量。
6 H% I# }! |; G3 WDM插件的主要变量下载,需输入一下这些3 k1 ?6 i  L1 J2 U' _4 Q. C
  1. /papi ecloud download Player0 ~) Y8 Z5 ?( J/ j& {
  2. /papi ecloud download Vault
复制代码
玩家、经济变量
7 M  ~  u( G0 [( N) l$ w2 r  i* N2 g9 Y9 U4 U- {+ y3 Q
其他变量请看使用情况自行下载,指令:- [5 h* W  u3 @* |- _0 B. d

; v; c3 O; R' M- `# n3 s9 `5 j7 h, _& A) [9 u
下载完成后,请重启插件
7 D/ B" b5 e1 C
  1. /papi reload
复制代码
  r( b+ l' b8 P- u" I
以保证插件的正常变量加载
. F1 q6 W0 O3 b5 `% X$ r+ l& E3 S- ^' d3 T% H* I

6、执行类型
& ?' B6 b: B; S7 O! w+ b
    >    执行的类型是为了确定命令执行的方式,例如[xxx] 命令。插件就会根据[xxx]的类型来执行命令,DM的类型有以下几个
4 f  h. [; l& q/ _; Z2 x) A1 _1 Y

3 o+ H  c: H/ U7 f
①[player]:玩家的身份来执行命令
—— 此指令相当于BossShop中的playercommand,使用玩家的角度来使用命令,会受到权限的束缚

6 }; @+ u% `6 \
例如:[player]<空格>spawn
这样的命令,玩家执行后,可能会受到冷却时间的束缚。

+ s% u1 i& A1 ~& w( e- c
例如:[player]<空格>kit 礼包名字
kit 礼包名字如果为Essentials自带礼包系统,并且有设置领取时间间隔,玩家将会被受到领取时间的限制
4 d) [3 w9 D; E* t3 \% s
[console]:以控制台的身份来执行命令
—— 用控制台的身份,来实现一个命令,相当于BossShop中的Command,执行的命令可以是OP指令,执行的命令时候是无视权限的。

) `. Q3 F% W. ]9 {& |- O
例如:[console]<空格>fly %player%
点击后让点击者获得飞行,无视玩家是否有飞行的权限

9 a- S! {: V6 V6 i. G* X" d
例如:[console]<空格>rain
点击后让世界下雨,无视自己是否拥有下雨的权限

" K( u5 L- m* p7 U; G
[commandevent]:执行一个特殊的指令
—— 这个可能很难理解,但是我决定用通俗的语言来理解。执行的命令就是没有在plugin.yml注册的bukkit指令,换句话来讲,当有一个插件可以自定义设置指令,此插件就可以执行那个自定义设置的指令。

3 z* u- U" [7 H( H- C
例如:[commandevent]<空格>bs
打开BossShop主界面,因为BossShop的插件别名指令为bs

- k; M! Z1 V7 ]/ T) H7 S
例如:[commandevent]<空格>main
打开一个设置好命令为main的ChestCommands的指令

8 _4 b& k0 n4 v, c' j3 j
④[message]:发送一条信息给点击的玩家(可以使用变量以及颜色代码)
—— 这个类似于BossShop中的message,当项目执行时候,可以发送一条信息给点击的玩家,发送的信息可以使用颜色代码以及变量!

4 d: V% i/ a& U
例如:[message]<空格>&a你好,世界!
例如:[message]<空格>&a君の名字&7%player_name%
( @6 Z  k+ z7 }' _) w
⑤[openguimenu]:打开其他菜单
—— 设置此类型可以打开其他的菜单/子菜单(仅限于DM自身的菜单)
' v8 J' O$ \4 \( y% f1 |
例如:[openguimenu]<空格>menu
打开菜单menu

$ s& B7 H  n  N8 P( j: S
⑥[connect]:将点击的玩家传送到BC子服
—— 相当于跨服,只需填你需要跨到的子服

. k$ i7 _% g8 A/ W. B/ b  Y
例如:[connect]<空格>生存服
将点击的玩家传送到生存服

  o* c; O. f) ^; V" T; \
⑦[close]:点击后将关闭当前GUI界面
—— 类似于BossShop的(bs close %player%),点击后会自动关闭当前GUI界面

# D! L8 b+ `+ y$ o2 v2 v# a
例如:[close]
执行后关闭当前GUI

7、延迟指令

      这也是dm插件比较突出的功能,延迟指令让你更加灵活使用菜单功能,你可以设置各种类型的延迟指令,执行类型请看"6、执行类型"
     你可以用执行类型来做什么?你可以设置一个玩家给予临时飞行后再延迟指令将他关闭。也可以设置在线奖励,例如玩家在线后需要点击,点击后开始倒计时,计时完毕将会给予奖励等等~ 有了延迟指令,你可以随心所欲来设置各种特殊功能。
格式为:<delay=(延迟的tick数)>  给某个指令添加延迟
tick的计算: 20tick=1s
+ U1 U1 y' Z. T! Y# m
例如:
- '[close]'
- '[message] 距离这个菜单关闭已经过去 5 秒了 <delay=100>'
+ C, X  @1 U3 z2 r) t, @# J

6 z: D2 e& B: V: n, W, h
总结:当你认识完以上内容,已经对DeluxeMenus有一定的了解,这些只是会帮助到你接下来的教程中!

' w* F0 s; l' c8 }+ G  B9 r

, w, i$ |, Q3 F6 m
! W& q$ Z& L: y1 Y
2 I) I+ T) s/ o! Q
二、开始创建菜单


1、认识创建种类
. P, S& |% [7 G4 d2 d8 {

       对于DM插件的插件菜单,有2种方式:
, e" f6 `8 `$ {+ B- d           ⑴ 直接在Config插件以及编辑。( _( M% s% n: Y0 N. Z* p
           ⑵ 使用Config辅助来重新创建yml文件,分开菜单,每个菜单对应每个文件。
5 G" E( M$ f: V, y/ w6 Q( ]) t) D     0 |# a' [4 p2 |, Z% N; p3 S
     对于创建到底要选取哪个,这得看平常编辑菜单的习惯。本夜幕推荐使用⑵方法,因为每个菜单分开文件,类似于其他的菜单插件,好编辑不辣眼~$ f8 q$ d# \2 P" u* Q) c) g* E# c
     而且当你编辑出错后,只会在那个菜单的文件中出错,并不会影响其他菜单。- Z/ l- ~1 L( f9 x* B2 W

2、如何创建
! C) V) n9 \. A9 o
方式1的创建方法:
; M' P1 o3 n+ S      直接按照Config原格式整齐对照在下面
8 a+ Y) G. X. |& M2 U7 x  W1 [: K5 n/ h/ ^
方式2的创建方法:0 k) e. {# r, s" q
      可以直接新建yml来编辑或者运用Config来创建     , T& j& j7 w- C6 A+ T
6 n3 p/ n( T8 O: l
例子:! k- L% F  S1 e: R! G% P9 ?1 D
  1. check_updates: true8 s) E2 C6 X" p$ t6 t7 m
  2. gui_menus:* y3 z5 C1 K" a8 H
  3.   menu:
    ! E" Q( R4 |2 Y7 G: u
  4.     file: menu.yml
复制代码
. e# w' w) G1 U/ V
check_updates - 是否检查更新. ~' q$ }' N" `- R9 p
gui_menus - 下面为需要创建的菜单
, J2 F  R! [, G
" w$ @; |& u/ `0 H+ L' N% z创建的格式:([]=一个空格)5 X  I6 `- K1 k
3 [" b8 p6 Y0 H2 A
[][]<菜单名字>:
+ L" I' s+ X3 h, z5 d, G) C/ @[][][][]file:[]<菜单名字>.yml; [: B2 ^$ H, y

# I+ T% ~7 a' n  y
同时创建多个菜单:   
; S: B# a' \7 n& M6 T# c( A
[][]<菜单1名字>:
/ [' T0 V0 U) X" u4 Q2 g! }7 Z! |1 \[][][][]file:[]<菜单1名字>.yml7 d+ e3 ^* R; r) x9 n- ?
[][]<菜单2名字>:, P; d8 M; ?1 K* \  a
[][][][]file:[]<菜单2名字>.yml
$ s5 x; u- S2 [, T: C
[][]<菜单3名字>:  @2 ]; k/ m/ V+ J8 n% t" W7 K6 y% s. I
[][][][]file:[]<菜单3名字>.yml
# \5 m* O6 n7 i- K

% w# y& t+ R7 }2 V: M完成编辑后,保存一下Config,并重启插件!' f/ Q% V! w; R) }7 A/ V3 s
这时候你会看见在文件夹DeluxeMenus上生成了另外一个新的文件夹gui_menus" p% R6 k1 Q( R2 B
打开它,就能够看见一个新文件menu.yml/ |$ }% ^/ D2 Y. C1 Y
这个文件就是menu菜单的配置文件,你可以编辑它
& T8 ^/ z% E) v, d8 ]
2 e/ }7 ~1 {& Z2 Z. j1 L% w

5 q6 o' J& @( e4 `; @( \9 u0 \$ h
注意在下面的教程中:都用方式2创建的菜单进行讲解
' ^+ D7 s+ h3 b1 r5 J, e& b" y


9 Q3 k: U& i) Z( U2 S4 q/ X
6 j( X# _( O$ E2 Q7 @8 e) }; K
$ U- l9 P" m. I, A, ?
1 }. U2 y. X) @; i) u
三、认识配置文件


1、认识Config
) ~. P, J+ R1 X" }
      当我们用方式2来创建菜单时候,Config的作用就是在于创建以及更新的按钮% h  U: V1 {( H; T
) e. d- H, B: x* Z. v( O6 D, l! p1 s
Eg:) s) N& r4 \: z5 l4 z- C0 [
  1. check_updates: true
    9 J. w" F' G8 W9 x; D5 F: @4 R. R
  2. gui_menus:; }8 Z& |  W% x1 }6 X$ N# l# x
  3.   menu:
      `7 l% L9 |: O
  4.     file: menu.yml4 o; ~) w: S+ K
复制代码
) U" T! t8 e. ?+ `% ~
正如上面,check_updates: true #是否检查更新
. g3 N8 I! A7 X# L0 q下面,gui_menus为创建菜单$ L& Z" d! @. `3 X0 I

. a9 C$ H/ }. u; C6 Q) U对于DM的Config我们就认识到这里,要懂得如何来创建(请看"二、开始创建菜单")0 D4 h# I, l% g' V$ t# l

2、认识'<菜单名>.yml'" K* Z# T( {+ t

     这个是整个DM插件最核心的文件,这个篇幅,我会详细讲解是如何构成DM的菜单项目的。
6 T# Y5 c6 H$ A" A) J8 j5 {/ a# n     当运用方式2创建菜单后,这些<菜单名>.yml就都储存在文件为gui_menus,你可以打开它来编辑。
/ C  B0 K3 n1 I8 i+ }  V* x* [9 k, a$ o' E( L2 d# z5 r( l
我打开了我弄好了的menu.yml  v- ^2 m3 @" l: M/ A
  1. menu_title: '&a&l主菜单'
    + d: e3 ~. Y6 u% a5 }' P9 `
  2. open_command: c
    8 i$ e  H) }( r6 I! y
  3. size: 54
    6 G; m% d5 c' B+ `% {
  4. items:) R) u( p. n' i' H" m( z) U: F! z
  5.   '1':8 H1 E. e  J0 l0 ^
  6.     material: 355" E: i( y' m2 h% E2 e% |0 {
  7.     slot: 0% [1 H2 P$ G! D, m
  8.     display_name: '&6家'
    - k9 Q" J  r& M+ k, M) D9 R0 A
  9.     lore:
    $ v2 O8 |& O2 X$ ^# ^. z$ U$ s. I
  10.     - '&a左键 &7| &f设置一个家'
      S$ P( }' c" t$ g$ M5 N
  11.     - '&b右键 &7| &f回到已设置的家'
    7 q$ U# X3 f) W& c- ?
  12.     left_click_commands:
    ; Z4 D5 f3 F9 Q
  13.     - '[player] sethome'; z  u6 R2 b8 W
  14.     - '[message] &a恭喜你设置成功'   
    ( s( T* l; O$ q4 W, G/ w
  15.     - '[close]'
    % z0 E: h6 N' W  ?: u- u! @' Z% p7 J
  16.     right_click_commands:5 R1 f' b7 I4 f
  17.     - '[player] home'
    ' v+ [6 m0 Z* L
  18.     - '[close]'/ w& ?9 R+ U' B$ N/ B/ {- W! y" b
  19.   '2':
    3 L& K$ J5 ]9 j% }
  20.     material: 54
    3 w, G: B* S. n0 |
  21.     slot: 1
    3 t3 l& U7 T0 a$ c" m, d
  22.     display_name: '&a每日礼包&7/&b每月礼包'
    " b8 z9 v1 Z) f& j0 @& q
  23.     lore:
    0 G" e" h. f& q" ]$ V! G4 G
  24.     - '&a左键 &7| &f领取&a每日礼包'
    # I5 l/ B: r0 ?( {& R
  25.     - '&b右键 &7| &f领取&b每月礼包'
    # d, @3 k% b' ~8 P
  26.     left_click_commands:
    * R0 l5 [( n0 l! r1 Q5 S) a
  27.     - '[player] kit 每日礼包'$ l1 |, _3 Z( s& b
  28.     - '[close]'
    ; H$ k6 C! [: g' c& Y. j" j: W
  29.     right_click_commands:/ m7 n# c6 V; [
  30.     - '[player] kit 每月礼包'
    ; e2 n: f6 i/ r0 e5 Z
  31.     - '[close]'
复制代码

4 B# C( ^' S, w. l% s虽然看起来很复杂,但是认真理解一下应该可以懂!; u8 P4 r3 c$ E5 d+ }

! Z+ L) T2 }4 r( t% b- r4 _: Xmenu_title | 菜单的标题,可以用彩色代码。3 L* M: s# s" h; q8 p

. _+ H2 s, b  h1 g) R2 P+ ^
) M* {, n% \. ^7 Y! \
open_command | 打开的指令(别名指令),可以自定义设置,这里我设置c$ V- H7 \/ D( F/ V5 R' X+ m7 d
9 V; C  \% C+ h& l$ a2 y6 \
9 z0 W# K* _; _) f1 M) [" H  c
size| 菜单的大小,最大为54
& R2 h* ^6 Z; y2 n- \大小类似于箱子,所以可以用箱子来排版(详情见鄙人bs教程排版章)+ P5 S$ L) E; i! l4 }9 B# \
5 p1 e7 {3 [! j" ^% {
item| 以下为菜单内项目
0 \7 J7 C2 d) n
5 ~( N, m* j% }6 A8 i9 K; r
'1'| 项目的代码|排在前面菜单优先加载
  ]1 v( B, b, ^% B6 I) @
+ q& W3 q1 @" g
material| 项目的类型种类,相当于显示在菜单上的ID,可以使用物品的ID或者英文名称
8 C+ a: a( h% L% g
* B6 q8 [: E3 c" H4 C9 W这里我设置了显示的类型为床(ID=355)和箱子(ID=54). m% E- K% p$ L0 s+ ^- _4 L: X
& q0 E% J- {# G$ f2 F
slot| 项目的位置(这里的位置和其他菜单插件略有不同)[0~53]
3 s- u* s) \& ]/ y; u* y( ?" Q$ d首先不同的点在于起始位置的数值为0,这里给了一张位置发布表来更好理解!& _# }, \! L: G3 ]9 I/ C

  s& ?* ?4 z2 ?4 @- j) L* R3 a/ R% C9 }( y4 b. o
display_name| 项目的名称(可以使用颜色代码及变量)
, X3 q, D- X5 v, x
5 U4 T6 p$ G0 O+ x$ G/ {: M. H7 o' U
lore| lore描述(可以使用颜色代码及变量)
3 C* g: i2 u" X, X1 G6 \. D1 g# r. D1 B7 e* ], s
% p) y2 x8 l8 k
left_click_commands| 左键执行指令,下方为左键点击该项目后执行的指令。6 ^/ |; ]. k( l& _5 X' i
例子中,正如上图,左键将会设置家- ~1 x: |" n" v1 i6 G. Z
, U" U8 z# m6 N% {0 h
right_click_commands| 右键执行指令,下方为右键点击该项目后执行的指令。
- E6 A; `1 d$ k
例子中,正如上图,右键将会回到家5 D# O( z' l+ h' D) x( I  r
: [( A% k1 q+ y) u% c
其他:
) J: Z: h  N3 i4 \8 d0 A: B- I5 `- n/ P
9 `/ l8 O2 a- W4 l* ropen_requirement| 打开条件设置
% b# q4 w) C( _' A$ G8 B' D' [' Mdeny_commands | 不满足条件设置) _) Q3 _) j7 b: b" B
这2个下面详讲9 K! Z! l' |$ ]  \1 d, h
2 w- N2 V1 K- H" Q4 Q; U
data | 子ID5 F/ a0 ]/ c+ h; N( |( y4 |0 E
! O* u, n0 H$ O! q
left_click_requirement | 左键前提设置
' ~8 o1 d+ u; [0 V- R# Oright_click_requirement | 右键前提设置5 k# \" l8 I' G0 ]$ y
这2个下面详讲
& ?1 v1 _2 [" t: h5 Z1 H" D# i, w; s! Z6 ?2 b: @- I
amount | 显示的物品的数量
% F$ m1 m+ z9 l, t4 m/ E" p
在菜单上可以自定义设置物品显示的数量(0~64)6 q$ v- M( ^+ E* R# |
6 j' ]: [4 o8 U4 z! m- H& ~
priority
| 优先级
- @  ?% X6 U1 \( S
当有多个项目同在一个位置,优先级高的项目优先显示,可配合可视化(下面详解)% d7 Y+ b" b8 {0 [
+ y; m4 k0 r5 ?5 h" P! f
updata: true/false | 是否刷新变量
5 v" l: B3 O8 J0 j6 `2 [
刷新GUI的变量,你可以用这个来制作时间显示
7 O7 M  M) |# R3 V# Q& d# M) P  b) B6 Y1 m( P  E* T# x+ U
hide_attributes: true/false | 是否隐藏物品的属性* Y$ T( G( {2 B# o# Z3 M! ?  B
hide_enchantments: true/false | 是否隐藏物品的附魔
0 W1 w, l! X6 y) Dhide_effects: true/false | 是否隐藏药水效果; X+ H! U" c2 k" k4 M
- Q5 l+ B( O6 F9 m
banner_meta | 可以设置旗帜的颜色和材质
+ j& ^5 }4 C. f" I/ B& R旗帜图案表
1 Y+ a$ W$ J" |" W

# C! ~6 `" {1 V7 O% n" z
4 V5 y! g+ K* @0 P! Q2 s$ a

) C& h! `6 \! S$ a5 E% Q
四、优先级-priority

什么是优先级呢?! f9 L. o0 F- L+ v5 w
在DM插件的优先级中,你可以实现同一个位置放置不同的项目,而优先级,就是用来区分这些项目的先后顺序,优先级单独使用可能没什么优点,所以要配合“五、前提限制”
% ?) r; ?4 ?4 t! L5 D( F) V, G
接下来我们结合一个例子:
( M$ E# R: G; W  |0 j
  1.   1:
    9 y( S9 N7 d( y  c. r5 u* S
  2.     material: 41
    8 [/ p0 U4 B& q& \( b
  3.     slot: 5
    9 p$ v' Q1 p0 |% d
  4.     display_name: '&6哇,大财主'' }. g* k* h9 Z6 h2 }
  5.     update: true
    & k' _5 O2 \& ]. i( W
  6.     priority: 1
      {0 k- @; L( ?' w) k2 c- M+ o
  7.     view_requirement: '%vault_eco_balance% = 6666'. J, k- Y3 I0 O7 k; ]% ?; ^8 t4 Z6 K  p
  8.     lore:/ i( W# J: m0 J8 d# o
  9.     - '&7当前显示的是第一格图标'5 ^* ?! G4 B7 y7 L8 V
  10.     - '&7你应该拥有&a6666&7游戏币才可以显示这个图标'
    7 y! ~2 t& `6 d# f
  11.   2:( h! s9 x* }( N
  12.     material: 371
    % ?4 }/ A( E; Y1 ^) d* U: q
  13.     priority: 2 . b3 u6 S% ?+ U5 @( D9 I3 E
  14.     slot: 5
    2 k0 k7 z; [; F' c. ?5 c& k
  15.     display_name: '&7你好穷B'
    6 e6 i3 C6 p+ T& o# m) \
  16.     update: true
    ' ]6 O, |& B4 E1 W/ @
  17.     lore:
    ' r) b+ _4 n1 Q8 B
  18.     - '&c你只是一个穷B罢了'
    0 e) X4 P  t1 e. o6 f% i
  19.     - '&7当前显示的为第二优先级'
复制代码

) U% Q' w9 N* a* e% n3 X这里可以看见,有2个项目名字分别为1和2,优先级分别也为1和2。插件会先优先显示1项目,但是1项目设置了前提限制,(%vault_eco_balance% = 6666
)当金币等于6666时候会显示1,如果不满足这个要求,则显示为2
& b* A) R" {9 K' s; j% {3 W" z& Q+ g4 t/ y& c

& m& G9 _1 G5 b# w金币不满足无法实现项目1(优先级1)则跳过来到项目2(优先级2)
0 `" i6 j* R2 v8 S5 f  C) C" W" D6 H0 O3 @
当我自己重新给了金币6666后* k, y; U' `5 u0 q& S# A) u

5 N# C: V0 ~6 i, O  A0 G$ X$ T+ `
+ S: F5 H, t! e( N* B& ]
' e+ U7 x+ ~; _. Q. y2 q
五、前提限制

前提限制分为2种2 j/ A3 l. e6 E
1) 点击限制- n/ V( i) ]' y! F" V
   
- 点击限制可能十分很容易理解,就是玩家点击后,当你设置了这个限制时候,玩家就会受到限制相应功能被束缚。比如你设置点击需要金币达到50,而玩家不满足,就会关闭菜单并提示玩家金币不满足' y/ Q& r- o' V9 M5 l
4 L0 l6 ?* c6 K6 B+ ]
2) 浏览限制. c5 n2 |1 J( a" J
    - 浏览限制,当你想要看某个项目时候,如果设置了限制,玩家达不到要求,就不能够看见那个项目,这个功能就是可以配合优先级来设置多种多样的菜单!( `& j8 Q" {3 j8 ?3 k/ k  ?

1、点击限制
1 ^9 U5 s- f0 q

% j' t' d9 {) X4 |  m3 W例子:" w/ J; s! B: ]# Q- u& ]- t( u
  1.        left_click_requirement:
    " J3 x7 k; h! h) e) H
  2.        expression: '%vault_eco_balance% > 666' ; |! o8 E7 m0 P6 i( ]' G4 d
  3.        deny_commands:
      t8 T) R# l8 [1 c. b5 b# ?
  4.        - '[close]'. r( ^. g% f2 ^1 T
  5.        - '[message] &c金币不足666'
复制代码
& @- r& @, a* x, R+ c
这里设置了左键点击限制(要设置右键只需将left改为right),expression为限制的权限7 _. F+ R& L( l. a2 V$ `% Z  g
  1. %vault_eco_balance% > 666
复制代码
意思为金币需要大于666& S  J. L- A; ~$ P

1 X# U! b. ^. |0 @; M通用的格式: <变量>[空格]<状态>[空格]<数值>
% D1 v% E  j) m9 N7 N( W<变量>:变量为Papi插件的变量,DM插件支持Papi变量,请去变量表(上面已给出)查找4 t6 Z4 c0 s' L
<状态>:判断的依据(高中数学书应该有教)
  v( v; N- L4 W( o) i: I. d例如: >大于  <小于  =等于  <=小与或等于  >=大于或等于
( q4 ?/ i3 D6 G, x" Z/ O<数值>:通常与变量相对应- Z+ S# k9 Z7 R7 h2 L  G) ^2 Z, ?

2、浏览限制2 e5 S- i' q$ F  k

& b9 A3 b0 z4 B  _) p5 r! P
例子:
9 F0 t$ f) @) T5 O7 i* C9 b% L1 Q
  1. view_requirement: '%vault_eco_balance% > 100'
复制代码

4 v* z' j+ s5 s, c4 {6 `2 |4 Y! T浏览限制为view_requirement 后半部分和上面的点击限制一致) x- E# d- F4 _) ]1 @
意思为:只有金币满足于大于100,才能够让你看见这个项目
1 U" p9 C' l3 P
* n7 ~5 x  m# O8 R% {7 n( c: F其他例子:7 F7 z2 i  I0 [: `' }" A) d: U  q+ E# ^
  1. view_requirement: 'BukkitPlayer.hasPermission("some.permission");'
复制代码

, @' _; B" K- c! Z. p  z有权限some.permission时候,才能显示$ s  F& g( Z( ~
2 d# B$ O  ?; R5 ?/ ^; ?
限制的类型多种多样,这里我只列举了大部分平常使用的。这些限制,可以让你制作VIP氪金东西~

5 J9 n% f, n7 S' c7 Y7 f
0 H3 o6 h& S$ n9 q8 R; |* }9 k
  m( c! L- L4 j- K* {
二章:实战练习

5 R" P8 ^! Y$ m& H5 w
7 ^" V" L% F/ x) F! I7 J+ d
一、左键|右键 类型指令

-1、认识左键|右键
* c# e, }, B# i& F
普通的判断指令
3 z& Z8 d9 a  o3 k) X
left_click_commands| 左键执行的指令为
- s* A! g  X! L
right_click_commands| 右键执行的指令为
# b4 Q) {, o! i3 r  t) t2 U9 O
这个功能可以让指令输出成2方面,一方面为左键输出,另一方面为右键输出。当你鼠标左键或者右键GUI上的项目时候,会输出你所设置的指令!
6 |1 @. a2 x1 @8 Q
特殊的判断指令(需前提条件等)
: V0 p7 Z. W/ R
left_click_requirement | 左键前提设置6 _: Y0 e" l7 q- L; Q$ U5 F3 Z
right_click_requirement | 右键前提设置
1 _' j6 T- a' Z  Z; `: R- @
特殊的判断,也是为左键右键来判断,但是这个类型会增加判断前提,你可以设置一个权限或者条件来限制玩家左键或者右键,当玩家达到你所设置的条件才能进一步输出左键右键的指令和功能!

: z8 g# H: Z6 V; C7 g1 D

-2、普通的判断指令(左键|右键)) X% B" E' a+ T- \0 [) o$ \

例子:1 A4 C) F9 W) J$ d+ e
  1.   家:
    . S1 n* q* k$ h) w1 O$ V# s+ x
  2.     material: 3557 x: F: s. F4 y( G1 N- E
  3.     slot: 0- r; v6 |& W  J
  4.     display_name: '&6=&b&l设置你的家&6='
    " t4 z/ J9 m! p1 H5 f  v  Y9 e: e
  5.     lore:
    ) A4 P1 V5 a+ |0 q
  6.     - ''* k2 m1 C: D4 q" }1 z
  7.     - '&7-  &f设置家&a左键'# {+ b1 v$ Q# K5 j' e
  8.     - '&7-  &f回到家&c右键'
    $ R* A( s$ x7 h
  9.     - ''
    5 j! w- `" N+ u0 G- I
  10.     left_click_commands:
    3 u( {3 S/ w1 V5 u
  11.     - '[player] sethome'; B# K* z7 ]* K3 M! ^) m7 f
  12.     - '[message] &f[&b杜蕾斯菜单&f]&a恭喜你,已成功设置家'
    " e, T( Q: `3 v) r( J, F
  13.     right_click_commands:# @1 C- V# ^# t6 g3 H  x) _
  14.     - '[player] home'
    , \7 ?9 Z( d) X9 _/ ~. g% k
  15.     - '[message] &f[&b杜蕾斯菜单&f]&a正在传送....'
复制代码
- c: z( E  h0 @
& n4 k7 `. S2 j* t. D6 p7 P

/ a* N1 D; M* Y2 p7 N这个例子的功能就是,一个项目可以实现2个功能,设置家以及回到家。指令分别为sethome和home,类型为[player]
9 j; G+ l* a/ b7 _# P. A8 c
# K9 e/ A3 @" V3 e5 P- U8 r图片说明:
  S4 f. G3 ]/ o) |
( `; c# b  a- I8 X. s2 T在菜单中看的效果为这样1 |( ]5 D* C9 g" g! a0 ?: |1 h1 K

2 H7 m: ^4 k. S! L* ^左键设置家并发送信息:  \' d2 z" m7 p( |; {$ k2 i& [

" B" B+ O' P: K& m3 O( v
$ t5 k. s  H5 X' ^( J右键回到家并发送信息:$ H2 _) p' E8 c4 M5 b! w

: l1 r: n; [! d0 b9 V# O/ B4 I3 b: D6 ?5 L. M: e

-3、特殊的判断指令(需前提条件限制)
/ G* J  I2 Y) }0 Z- v4 z
   
特殊的指令判断,要配合前面的普通指令判断,设置一个条件,当玩家能够满足,才能够左键右键执行输出!; J& g; t6 o: M' s$ {
7 N1 g8 ]6 c; s6 }% l
例子:
* W' n5 `" j, j  U, z
  1.   特殊飞行:
    8 T$ F+ H  K4 P% h. ]- c& N" e% B1 @
  2.     material: 288
    % [1 O0 R; F; }5 @2 D
  3.     slot: 0- z! F; O5 u  i2 Y7 \
  4.     display_name: '&c==&6特殊飞行&c=='7 _, I9 N2 y2 r7 c! d! I( I
  5.     lore:" D8 M/ a) h5 h- z; @4 x
  6.     - ''8 |8 b; }( ~$ ^( C
  7.     - '&a左键&7开启飞行&f-&c需要用户满足金币超过666'
    # S& w! ~, W& D  D' v, i6 B) Y9 K
  8.     - '&a右键&7开启飞行&f-&c需要用户拥有权限pcd'
    + l" o9 T( N* Z: T% u! _! A
  9.     - ''3 z5 _! g( q. N" r+ r* k! {1 d
  10.     left_click_commands:; e5 K, z2 ~$ t2 [( }
  11.     - '[close]'
    4 a! H7 }  `- k3 \
  12.     - '[console] fly %player_name%'
    4 \. D, w6 n  V
  13.     - '[message] &f[&b特殊飞行&f]&a恭喜你,飞行已成功开启~') D; T) P2 H8 q! M
  14.     left_click_requirement:
    ) s1 b+ c- ^( L% `" X2 I* ~- U, c) M
  15.       expression: '%vault_eco_balance% > 666'; h* c) [' g! L$ Q
  16.       deny_commands:& \* U( O0 J4 Z3 c4 N
  17.       - '[close]'5 [! P3 W3 b6 A: `# [7 I' P! b
  18.       - '[message] &f[&b特殊飞行&f]&c金钱不足'
    . ^. G3 V2 H! z7 g! w' j+ ~
  19.     right_click_commands:% X$ @5 d) G! W7 M- A
  20.     - '[close]'
    ( N; y5 ~9 S8 @4 e( w
  21.     - '[console] fly %player_name%'* j8 a# P2 E) A( o
  22.     - '[message] &f[&b特殊飞行&f]&a恭喜你,飞行已成功开启~'
    ) J+ ~: n: _, ^( x# b
  23.     right_click_requirement:: L1 x& f( ~9 p$ |% C8 `9 c
  24.       expression: 'BukkitPlayer.hasPermission("pcd");'
    3 [3 U, h! W$ q" r  ^( y/ h
  25.       deny_commands:
    4 o) |1 q& Q, B! I: p: ~6 |# ^0 V
  26.       - '[close]'
    9 S8 p8 G5 _9 `
  27.       - '[message] &f[&b特殊飞行&f]&c权限不足'
复制代码
2 R7 R) F6 l5 |8 c. o
说明:
1 v2 G. i3 }7 Z: c8 P
        在原先拥有左键和右键的输出后,添加
  1. left_click_requirement
复制代码
         或( U* J1 c, }! t6 l1 q# `8 N6 I
  1. right_click_requirement
复制代码
8 M9 a6 R0 `# I9 @8 u6 N3 c0 u6 z
这2项目为输出左键/右键需要的前提,这里的前提类似于浏览限制。
& ~/ S2 i$ j( t+ t  D* `这里我分别设置了金币条件以及权限条件,分别放置在2个判断方向。' r0 ]9 w8 y! I, Y
9 |4 I" T2 T8 c2 L
lore尽量向玩家说明清楚, D; ~& d2 z( t3 V0 p
; D9 {) t# l% \% r8 n
左键后:7 e5 {: s- T5 P: T+ p9 b7 k2 [7 `

  u. F3 M0 K& J2 }9 a% w
2 O; A" ^7 i8 ^2 K, T右键后:
+ B( A& a) F# D. l# Z9 L3 c, v( j8 D- t# j. v( G
2 n- Q  d( p7 }/ Y4 g8 U( u
这里有一个注意的地方
% C+ H9 L3 l0 a( q- D" q" q0 a
  1. deny_commands
复制代码
这个为不满足条件后输出的指令,这里大部分我们设置[message]类型的指令来提示玩家不满足条件
5 J3 j8 f3 W3 j6 J+ z3 Y. X6 m" p2 h, M1 r2 y% m
效果图片:' `6 R* Y/ L8 M: X7 f+ v

- b) H" e; @# l6 A, z2 w" N
( r; L3 D) A; n, g4 L
' W, [' N* @7 l' u  M5 `
  {+ X0 ?7 g& C# j' h: q% x
! H$ B2 f* [4 ^5 M
二、出售/收购 商店的运用

-1、开篇
# D6 x' |6 T3 K. B7 d
      
商店,一直是生存服必备的东西!dm菜单插件也可以轻松制作一个完美的商店,足可媲美BossShop老板商店插件,它的优秀之处在于左键右键来区分出售和回收或者单个回收或者多个回收(请先看[2]章‘一、左键|右键 类型指令的运用’再看此篇幅), h' y* f$ a. ]6 U: W# ^) r# r
      ②在这个篇幅,将会有
/ P& E, _7 I1 ]9 y9 Q
  • 一个项目 出售/收购 的项目
  • 一个项目 出售(左键/右键)和收购(左键/右键)的项目
  • 一个项目 出售/收购 项目 单个出售或收购/多个出售或收购 的项目
  • 一个项目 出售/收购 项目 单个出售或收购(左键/右键)和 多个出售或收购(左键/右键)的项目
    4 t( O, i6 [! U2 i( m4 K: w3 N0 k

-2、实战1(出售/收购)
  _; s* p( Y0 z
出售单个物品例子:
5 p+ p7 }  ]1 w
  1.   单个出售煤炭:  E! }+ T! m: E
  2.     material: 2639 G: E" E0 E2 s5 {
  3.     amount: 1
    ' l" B9 h0 W+ V( M) s
  4.     slot: 5. Z8 C" b+ q% m0 q
  5.     display_name: '&7[&b出售&7]&a煤炭&f-&610&7元/个'
    - H' [; ^$ o) t% h5 W" n' M; |
  6.     lore:
    # X" n- k' E: @9 s, R; U
  7.     - '&7点击购买'+ x0 A) w9 b/ r, o% y
  8.     right_click_commands:- n% H* s! h7 m: T* M
  9.     - '[console] give %player_name% 263 1'4 n2 {- r& X$ r- j2 ^% k- t9 r( c
  10.     - '[console] eco take %player_name% 10'
    5 L. n2 H2 Q( v: R
  11.     - '[message] &a恭喜你购买成功'
    9 ?; X' ~/ q# V( w8 S  {
  12.     - '[close]'
    5 W2 M  E! ?( l7 w+ W7 N4 S
  13.     right_click_requirement:
    ; r6 {  `" D4 }. @2 Z! R
  14.       expression: '%vault_eco_balance% >= 10'
    9 w% w9 i7 C) J
  15.       deny_commands:0 z" u$ ^" W* _/ I
  16.       - '[close]'
    2 p* _$ c, L$ R( j- [! E; n7 X3 f% N
  17.       - '[message] &c金钱不足'/ J) v. j: ~: p1 T
  18.     left_click_commands:
    6 m4 _4 ]8 M, Y, m. o
  19.     - '[console] give %player_name% 263 1'
    3 Y7 W8 m0 Q4 I% F5 }
  20.     - '[console] eco take %player_name% 10', H* b7 x: Y& V; D
  21.     - '[message] &a恭喜你购买成功'
    5 C% f. a2 j& P
  22.     - '[close]'
    . Z; l; J* I$ \! K. w. N
  23.     left_click_requirement:
    / H/ ?3 k9 V' y4 N
  24.       expression: '%vault_eco_balance% >= 10'
    $ {1 n( r+ F+ I0 A$ V( e2 E
  25.       deny_commands:
    ; q" t' q0 `. C7 B
  26.       - '[close]'2 w* k/ K) i$ y$ Q3 V, A% _! i- X/ J
  27.       - '[message] &c金钱不足'
复制代码

2 s' B! V+ O. \( n& ^% `. i# ?效果图:
7 P* r/ T7 t% j; B' A9 D( ^) Q0 o6 j: _* Z: M, v( i& p

: f* ~3 m( F4 Q购买后:
# k  j- Y9 d% \1 w
  d; B* d8 E2 `0 e! f" t5 e0 N" C" O' y* P3 g
详细解答:7 Z8 Y7 r- E" j* P/ o1 G
   此例子出售的物品为煤炭,价格为10元,所以我们的前提条件设置为>=(大于或等于)10元才可以触发相应的指令,指令为give 玩家煤炭以及 eco take 来扣除费用,适当增加[message]的指令类型来提示玩家~( X& k9 c* k0 c& i. X% \

& f1 z3 v+ w  w& G3 j
回收单个物品例子:1 h* R% j0 X" R/ f: I" ~/ _
  1.   单个回收煤炭:0 I/ C2 F) m) {5 @! K
  2.     material: 263
    . X9 h! f) D9 h% ^2 l4 H, t
  3.     amount: 1
    - K8 n! s& ?. M
  4.     slot: 6
    ) a  e7 i7 B! r% {" x9 N& ~7 m
  5.     display_name: '&7[&b回收&7]&a煤炭&f-&610&7元/个'# ~) c% P4 b/ W% k
  6.     lore:: s: v# |: _+ g- Y, n7 I
  7.     - '&7点击回收') A) X& W5 y2 w% ~% k7 y
  8.     right_click_commands:
    * R' ^4 W1 `# ]+ r
  9.     - '[console] clear %player_name% 263 1' # 这个为清理玩家背包一块煤炭
    8 b' X( L0 @/ z- x( l3 Y$ U
  10.     - '[console] eco give %player_name% 10' # 拿走玩家煤炭后,要给玩家报酬, a6 {  p7 N- e' b
  11.     - '[message] &a恭喜你出售成功,获得了10游戏币' # 成功的语言6 E9 }% d$ w% N* d' a& o
  12.     - '[close]'0 d' X+ C5 T+ a% k
  13.     right_click_requirement:
    . b* {. y# N# J0 Z- O8 i
  14.       expression: '"%player_hasitem-mat:263-amt:1-data:0%".equals("yes");' # 帖子详讲: O' y( {+ I8 f  I% U) ]% t
  15.       deny_commands:
    6 m& G/ B) s9 R. v
  16.       - '[close]'
    0 k2 g7 I: o% o
  17.       - '[message] &c物品不足'
    ' h/ |* J% e' b0 y
  18.     left_click_commands:" R! ?8 R6 S* ~' S5 J; r- n
  19.     - '[console] clear %player_name% 263 1'
    ' B6 H" B8 T- O% \  f. [+ [, K
  20.     - '[console] eco give %player_name% 10'* {  ^: g9 `" l: b2 Q6 p. ^5 G
  21.     - '[message] &a恭喜你出售成功,获得了10游戏币'
    & R8 @9 P* _, N& }
  22.     - '[close]'6 R9 C; C4 E# b  p4 Y' \1 j
  23.     left_click_requirement:; I- ]- R! Q( \6 P* G/ u5 H
  24.       expression: '"%player_hasitem-mat:263-amt:1-data:0%".equals("yes");') @7 \" f9 m! B0 b3 R$ a
  25.       deny_commands:
    ! E6 l& N1 `+ ]
  26.       - '[close]'
    - _. ~* O1 S4 v
  27.       - '[message] &c物品不足'  
复制代码

$ A+ e" t0 G! C7 F  r- D4 ^配置里面有些地方不同已标注好,回收和出售在于不同的地方最主要还是前提的条件,出售前提条件为你必须有钱,而回收在于你必须有回收所需要用到的物品,这里的前提限制条件为:! X5 A8 N2 H2 W+ C% d; P
"%player_hasitem-mat:<物品的ID>-amt:<数量>-data:<子ID>%".equals("yes");8 s" {) k5 o# a, d" B& A# a

) [, S) I7 C5 i0 O5 ?( W! }效果图:7 g' w; \0 i5 j9 ~2 [
' }8 _" R$ s3 b% j3 f. u% n1 F
3 z7 N# m+ Y, Q: L9 ^/ K1 }; L- Z
点击后:; n6 S* f+ g7 @
( W* z+ k+ [  n5 y4 {) O

: @7 z3 [& B0 {: G5 Y$ s
-3、实战2(出售和收购)+ @3 A8 i: P7 G' p$ Y7 s2 V3 N

例子:' H: L" m! N' [! `, I' T
  1.   单个出售或回收煤炭:: ^6 R' t3 p/ w5 C
  2.     material: 263
    7 d# d( U% A; {7 _( _+ A' n7 Z
  3.     amount: 1
    - q& ?# M  |1 V5 M7 Q
  4.     slot: 7- g! k& m1 S' }, n: u" h
  5.     display_name: '&7[&b出售/回收&7]&a煤炭&f-&610&7元/个'1 a3 }0 R" Q* `$ O4 b3 d& T
  6.     lore:
    ) G, {- g& o7 G7 i8 J' o7 }  _5 d; K
  7.     - '&a左键&7购买此物品'* P; i; e  d+ |7 G" Z0 M) N
  8.     - '&a右键&7回收此物品'% b$ c) Z. _- L# L2 b8 @0 K) c) ]
  9.     right_click_commands:( b" g0 f  S& f. f/ c$ K
  10.     - '[console] clear %player_name% 263 1'
    5 n# G2 [- ]. J6 f
  11.     - '[console] eco give %player_name% 10' 4 G, j' ^5 n7 H
  12.     - '[message] &a恭喜你出售成功,获得了10游戏币' 8 G/ M, l* s6 t1 a2 U
  13.     - '[close]'
    & V8 X) b% m4 R6 {1 p9 V
  14.     right_click_requirement:6 T0 ~7 q* I/ C- r  o
  15.       expression: '"%player_hasitem-mat:263-amt:1-data:0%".equals("yes");' " n0 z" g, w! K3 c
  16.       deny_commands:
    . _1 u4 m& ~8 _' k1 P
  17.       - '[close]'8 _0 Z) i0 B2 k" G9 S9 F# {. M" o; Z
  18.       - '[message] &c物品不足'
    2 F) n& h& ~" p
  19.     left_click_commands:5 ~/ {! J3 T3 [
  20.     - '[console] give %player_name% 263 1'
    2 r! G. y* @' H$ G; f; z
  21.     - '[console] eco take %player_name% 10'
    # a3 Y% e0 m+ Z* {' I& L
  22.     - '[message] &a恭喜你购买成功'7 x# n" ~6 d( j6 T6 p
  23.     - '[close]'9 L2 Y' S5 m  u1 |& T
  24.     left_click_requirement:
      p! h' \0 D2 [5 o- P
  25.       expression: '%vault_eco_balance% >= 10'4 Z% j- }& a; W4 e  D
  26.       deny_commands:9 v0 L: k; D( n. O1 Q
  27.       - '[close]'
    * h0 |& @, s- L  A! C2 w
  28.       - '[message] &c金钱不足'
复制代码

' a: Y/ s% |4 d/ @2 _+ K4 n5 S. P     出售与回收合为一个项目,看起来是不是很高大上呢,其实在前面的例子中修改一下左键右键项目即可得到,这里注意一下lore要写清楚左键和右键输出什么,方便玩家选择。
( u/ |) n2 |: E# [
- @  N7 A: {; g0 t5 d9 K! N- M
效果展示:: w0 z7 G8 G  u$ c4 F
4 N& f4 I+ N% v" x! D
# N' N- R% R8 A  w( E4 b8 {
左键点击与右键点击图:' Z1 \8 z( p7 {5 _/ ~5 D
' b$ R& D1 B; D9 L4 l7 z
" ]% f. C% q1 Z! W; j6 Y0 J

, K1 i- B* t9 W$ ~
# v* {$ T! |8 c# d

( L" f9 O* d! U! G0 {' m2 U

, r8 p( `! t9 s
  M, f9 ^1 u7 O  p  {8 J# c/ b) v
三、每日礼包

-1、介绍
: c' q. y2 T4 w2 @2 p" h; ]
9 ~* P9 L( j  D3 r. J
         每日礼包可以促使玩家每天登录游戏来领取礼包,这里的礼包我们习惯用Essentials的kit功能,而DM菜单可以更好的制作每日礼包,不仅可以达到每天只能领取一次的效果,还可以在lore上提示玩家还有多少时间来领取下一个礼包!(这里需要运用papi变量)
! x8 `! R- J! L
5 [: ~, U2 V9 |0 s4 P
-2、实战例子
8 R, v9 t- |: C& Y6 b3 O$ }$ A& v
=
1 O* w: ~3 T& @& f8 X
  1.   每日礼包:
    $ F6 h; ?' k( E7 r; C8 |$ }
  2.     material: 54
    9 ~# o1 r; T# p; k1 ^
  3.     slot: 10
    & ~/ x7 n8 h, `7 [" h8 K
  4.     priority: 1
    8 D6 j+ }2 `% B
  5.     update: true
    , n% n) k9 [2 r
  6.     hide_attributes: true
    1 q2 B; E$ Q! R$ x
  7.     view_requirement: '"%essentials_kit_is_available_daily%".equalsIgnoreCase("yes")'
    0 y4 q* ]: D1 h* c; Z, l: d
  8.     display_name: '&a每日礼包&f[&b点击领取&f]'
    7 t+ i) [6 T) m& ~+ B7 R
  9.     lore:
    % I$ V3 V5 t8 R! S6 L
  10.     - '&7点击可以领取哦~~'# _8 m9 z# d( d6 G4 C9 ~- t
  11.     - '&7这是一个礼包'8 g9 w4 C) w% L$ M4 F) W  n9 Z
  12.     left_click_commands:
    4 W2 d3 U2 i" Q' H% _
  13.     - '[player] kit daily'
    ) L- r, B' v1 }. P4 W
  14.     - '[close]': h* m; r) |" a% V' o) A  x0 D
  15.     right_click_commands:
    8 L1 D. t% H9 {; b& `' C
  16.     - '[player] kit daily'/ x& M0 }1 n( F5 v. D8 ?, \
  17.     - '[close]'; P% e9 C& @2 }6 {
  18.   礼包未冷却结束:3 X+ H% B$ L2 I  Q
  19.     material: 166+ Y4 t. A( Z5 f! p
  20.     slot: 10
    - m! u- C# P! I0 H2 d
  21.     priority: 2
    . b7 A; {! ^0 N" r6 Q
  22.     update: true/ P+ C4 b5 o) G. G
  23.     hide_enchantments: true4 G7 O1 J. l3 x0 I& ?  M- ]+ M
  24.     enchantments:2 j0 ~. Q! E# M9 b9 C
  25.     - 'DURABILITY;1'9 J# @0 p) @/ i/ M1 h
  26.     display_name: '&a每日礼包&f[&c冷却中&f]'
    ) B8 X+ }. b9 d# B& v+ \$ z* B) C5 Q
  27.     lore:. ~; j9 k0 D8 ^/ X" M
  28.     - '&c当前礼包正在冷却'
    * e' V' U! ~2 y$ _) a5 S( q
  29.     - '&7请再等待 &c%essentials_kit_time_until_available_daily%'. {6 n5 B  S1 D, L" D
  30.     left_click_commands:* X5 [0 q7 E$ t3 o& X
  31.     - '[message] &c真坏,冷却了还点我~'
    ' r" d  Y2 H4 X: U6 T
  32.     right_click_commands:
    & P3 N1 Q& g: p
  33.     - '[message] &c真坏,冷却了还点我~'
复制代码
. f1 E. q& c$ m8 a' D7 S5 Q$ j3 z
效果图展示:* l/ }- \/ w8 Y$ d! p
8 ?4 J6 Q2 K1 c8 @/ o) H2 G
- C! f* p; j8 j+ M
领取后:( O, ?! X2 t4 o" s0 O9 n2 r5 \

0 C$ W6 n# o* F, u6 s9 @+ M4 n9 k$ m1 T* |9 G
开始制作:
0 M2 Y! n, C) z+ p5 K; m# {①第一步先设置你所要的礼包,这次例子我用的是Essentials的kit功能(不会的同学可以搜索一下别的教程)
; u5 o; A8 ~7 g, t; Q
+ K' b  b  j( s/ i: \
  1.   daily:4 `4 V8 X) m. B) \" k
  2.     delay: 86400/ t  T$ p) j4 k2 P& e
  3.     items:
    ' E# T6 b7 w. i; l3 v/ I1 {
  4.       - 388 64) B3 t9 O+ g9 }2 \8 u- Y
  5.       - 274 1
    ( i6 G/ d8 o# S* h
  6.       - 275 1
复制代码

8 U6 ~7 P5 ]6 X  x注意这里的delay为86400(单位:s[秒]),86400秒=1天
# B( c! m. C$ q
: A4 p9 ?& \9 K) _9 _②下载变量Essentials
3 Z( r: f( k$ F" i: d% p5 m
  1. /papi ecloud download Essentials
复制代码

* b) H- h& z5 f, V2 p③配置dm菜单的配置" R& d7 W0 j% s: G8 d$ g
这里我已经配置好了,这里用了浏览限制和优先级2个功能来配合(不会的看[1]初步认识DeluxeMenus)
$ ^( D: c! R  m7 Q% U7 c4 g- E4 |5 L$ J* ?; Y
每日礼包中的浏览限制:
4 N& w! \  j( j. M
  1.     view_requirement: '"%essentials_kit_is_available_daily%".equalsIgnoreCase("yes")'
复制代码
$ A8 L6 K" d) r5 q6 z. B
当玩家可以领取daily的kit工具礼包时候,才显示优先级1(就是此项目)& \; r3 U( I8 H9 S* o+ f5 x' B
, {$ t6 D" R2 ?1 ]
礼包未冷却结束中的lore变量:
  t" N4 L1 h3 k6 T2 K7 }6 v4 F
  1.     - '&7请再等待 &c%essentials_kit_time_until_available_daily%'
复制代码

2 Z% k) E* B4 q- ^1 _. d这个为礼包下次能够领取还剩多少时间的变量,这里可以显示在lore上,当优先级1不满足就显示优先级2就能够显示这个lore的变量来提示玩家还有多少时间才能领取此礼包~
- ]( k* R3 C% I+ M5 y# ^. W: v3 Z: m, H0 b  C; B! X
④总的来说:8 L# R2 o6 {* @
      先判断玩家是否能够领取,如果能领取就显示优先级1,如果不能就显示优先级2,而优先级2中的lore变量,可以让玩家清楚还有多少时间才能领取下一次的礼包,这样来达到每日礼包的目的。* N& E% g2 A. r  q. P1 ?4 s6 s6 M

0 j" l; O0 \3 F) M
           需要注意的点,配置中,记得重启变量插件以及菜单插件和Essentials,这样才能确保变量能够正常使用- F- i) j) |  `  [! c
2 @8 E# I& p' Q; U8 A' U
& V: d$ _- ^+ \" h% m# c

' i( O; ]. Q& r$ j
$ f. q# r: J  K+ k4 g
5 I; n* p; G7 L$ w+ e3 s+ h
, E+ Z7 f2 \% s4 c5 J0 {
统计

帖子字节:约4W
耗费时长:3个星期(中间读书以及测试例子和学习插件)
是否原创:参考原wiki后全部原创例子
图片数量:26(数错请联系)
其他优秀菜单教程帖子:BossShop老板商店
  l# A! @* q  B( U# G9 ^
鸣谢
谢谢你们能够看到这里
鸣谢秋风残叶的wiki对我的大力帮助
感谢PCD小组成员对我的指导和帮助

" c, |8 G. h* @7 x

: L. d7 Q  M" y8 x, S3 U
帖子来之不易,是否评分一波呢?

2021.12 数据,可能有更多内容_' [2 Z: p- q5 O
总引- t/ t% m% }; p2 ?$ h6 L8 r( z7 ~
一、教程前话

0 V( m7 s/ I& j( w
1、楼主废言:8 T# b( G; b+ l
——
DeluxeMenus是一款不错的菜单插件,它拥有更多的特殊功能,比如(左键/右键)判定,可视化的点击等等,这次写的这篇教程,虽然不能算是优秀,但是也能够帮助更多人来认识、使用、理解这款插件!如果帖子中有什么不对,错误的地方,可以回复帮忙修正!谢谢!; H3 S# N+ _0 i5 q, m4 h

- }, h' O0 s, V/ _+ a
- y! ^) {3 l. K' W
8 e" X$ F% J: g8 [
2、相关链接:j; T, E3 r& D- |) \
DeluxeMenus原贴 | 站内搬运贴 | 站内Wiki | 原帖Wiki
5 C3 A$ _) e) m2 |

7 Z3 \1 R" q% `3、帖子指引:
: |3 Z2 m- tM( U( {[0]总引一、教程前话[1]初步认识DeluxeMenus一、认识DeluxeMenus二、开始创建菜单三、认识配置文件四、优先级
- a- o# D5 G7 g* m; U* p五、前提限制
. g! w- R- m* o' U7 l$ f! \
[2]实战练习一、左键|右键 类型指令二、出售/回收 商店的运用三、每日礼包[完]终一、鸣谢二、统计
# q# [9 _* {' S; N% h. f3 ?G
z# X$ p5 \# J: Z# f! p

9 \7 H7 ]$ v& Q
觉得帖子写得不错?4 ~1 v1 ?, x+ K8 E: J" y
点我收藏

2 I# b+ ~" w( s8 g
- P& u6 zd( w* N1 q
# w$ Y9 o7 E, f% N
; b9 b# j& E1 X
一章:初步认识DeluxeMenus; A7 D3 [3 P: b% ?
. x' p! g, b: F/ a2 z

' V2 v9 I3 l$ q
一、认识DeluxeMenus


1、简介
& x/ ~/ _6 J9 G7 Y8 r1 i
—— DeluxeMenus菜单(以下简称DM)是一款功能强大的菜单GUI插件,它能够让你制作一个可供玩家编辑的GUI界面菜单(与BossShop、CC等相似),然而它比其他的菜单插件有着突出的优点!
& A4 r1 P6 o2 X
6 L( ?8 z8 F' i6 A# e+ s+ w) X; i8 |: [
左键/右键 点击项目不同效果[√]# t; @' c3 k& M4 V% m. ?4 Z4 ?- c- x
支持前置PlaceholderAPI(变量前置)来使用更多的变量[√]
' o5 }6 A% y% S/ ~8 v- v+ B4 T1 I可视化的鉴定(比如当玩家拥有什么条件时候才可以干嘛等等)[√]
3 }1 h" E- g, x% m动态的标题[√] 新版本已移除' C$ ?2 a' M/ K/ g1 x: u$ t5 j1 F
延迟的指令[√]1 X7 ~6 Q" gLc4 h
多类型的指令[√]
5 o2 m, PL0 y. J5 ?( s5 d5 N! \
等等...
7 ]* ^G5 v0 ^8 d8 B. S7 a
2、运行环境
+ q' c: }( C2 y" _! O
版本:1.4.7~1.11; e1 k5 y6 f$ A8 M, |( j, _+ E
所需前置:PlaceholderAPI(可选)、其他插件9 G" B: S- }! S" `8 \. l
插件最新版本:1.8.0
! C. k% r/ U0 c! Y
3、指令( m! {1 p$ f4 j. J+ X$ B


* H$ K: w" b& d! b! ~/dm open &lt;菜单名字&gt; (玩家名字) | 让某玩家打开某菜单, D; b3 H6 D8 A6 S" J& j- ]& W% v5 i
/dm list | 列出所有菜单
2 g2 h% [) v) \& k/ r/dm reload | 重启插件6 q/ [4 y$ A, B# ^/ yY

4、权限' I9 a8 i6 t$ x4 A7 y( y8 S. a

deluxemenus.admin | 插件的全部权限
3 g/ n- V( \' y: pc% `deluxemenus.open | 是否允许使用指令/dm open &lt;菜单名字&gt;来打开菜单
* z0 T% O8 k* G, L, m. i7 E% Zdeluxemenus.open.others | 是否允许用指令/dm open &lt;菜单名字&gt; (玩家名字) 给一个玩家打开菜单4 K* k7 J2 e* E" U5 d7 o$ H! v* X
deluxemenus.open.bypass | 是否允许没有权限可以打开设置权限了的菜单. @- {& t" F$ }0 p1 E5 F( e
deluxemenus.menu.* | 所有菜单的使用权限
4 L, Q* Z5 L( e5 |1 Ndeluxemenus.openrequirement.bypass.* | 打开菜单无视所有条件就能够打开1 U2 z8 m$ \. s* ?) h- n

5、变量$ L5 e4 A2 b2 j' M7 Q& s+ N

变量前置为
PlaceholderAPI2 U8 g0 J2 Y, c; A! X0 l: `
变量大全戳我(来自插件百科)
: O/ _x% I% j2 W- }+ R/ G7 s6 ~9 K

' y+ i: t( r6 g- l2 W下载完成后安装插件,下载完成后下载对应的变量。8 r) U+ Gh, n3 oJ
DM插件的主要变量下载,需输入一下这些
4 J# t9 x1 p9 i) k7 [1 ~

代码:

  1. /papi ecloud download Player
    / ^- b' X8 P; f5 `3 N. Z5 m
  2. /papi ecloud download Vault
玩家、经济变量7 d3 O" W7 g* N3 m' f0 _+ h! ?. D. K
$ O# ]& {7 }/ _" z
- z) V4 d' H2 x) [8 n( w/ p( V4 G
其他变量请看使用情况自行下载,指令:
, {) e* ]& T* j8 Y* K0 G
7 }% o) j2 V+ y5 L, B0 F
. T1 P5 \( o4 r8 q
. b, s; N8 O5 X! D; e+ v
下载完成后,请重启插件0 f, ^/ e2 |7 k" f3 rR

代码:

  1. /papi reload

9 F$ `# u4 E$ o3 t以保证插件的正常变量加载: ?0 }0 l3 |% o1 P
0 h. I9 y# E; i4 n7 y

9 P% n+ H$ |: v, Z# t
6、执行类型
$ M+ n: i- R! |( D
    &gt;    执行的类型是为了确定命令执行的方式,例如[xxx] 命令。插件就会根据[xxx]的类型来执行命令,DM的类型有以下几个
9 W0 w& m: o+ KK7 y

* j5 S3 u2 U9 Q: w7 b$ [. ?①[player]:玩家的身份来执行命令—— 此指令相当于BossShop中的playercommand,使用玩家的角度来使用命令,会受到权限的束缚
8 y; E) N6 q' V0 }例如:[player]&lt;空格&gt;spawn这样的命令,玩家执行后,可能会受到冷却时间的束缚。
: H! jCw: d; Q2 S/ @例如:[player]&lt;空格&gt;kit 礼包名字kit 礼包名字如果为Essentials自带礼包系统,并且有设置领取时间间隔,玩家将会被受到领取时间的限制
; D. b! S9 G- r0 }! ]i[console]:以控制台的身份来执行命令—— 用控制台的身份,来实现一个命令,相当于BossShop中的Command,执行的命令可以是OP指令,执行的命令时候是无视权限的。% v) T/ g9 j1 S! e& C3 g1 c5 ^
例如:[console]&lt;空格&gt;fly %player%点击后让点击者获得飞行,无视玩家是否有飞行的权限6 G* g$ ]# x) `- z4 V
例如:[console]&lt;空格&gt;rain点击后让世界下雨,无视自己是否拥有下雨的权限. {$ {) S7 Z5 ]! L
[commandevent]:执行一个特殊的指令—— 这个可能很难理解,但是我决定用通俗的语言来理解。执行的命令就是没有在plugin.yml注册的bukkit指令,换句话来讲,当有一个插件可以自定义设置指令,此插件就可以执行那个自定义设置的指令。* I& l8 t5 }+ B/ ~2 E( s! f' G2 a
例如:[commandevent]&lt;空格&gt;bs打开BossShop主界面,因为BossShop的插件别名指令为bs0 _9 e7 `5 l2 E8 T) |+ o+ a
例如:[commandevent]&lt;空格&gt;main打开一个设置好命令为main的ChestCommands的指令5 `) Y1 S6 k4 A; R3 k) f7 g
④[message]:发送一条信息给点击的玩家(可以使用变量以及颜色代码)—— 这个类似于BossShop中的message,当项目执行时候,可以发送一条信息给点击的玩家,发送的信息可以使用颜色代码以及变量!
6 c+ ?3 e+ u! T/ L% }例如:[message]&lt;空格&gt;&amp;a你好,世界!例如:[message]&lt;空格&gt;&amp;a君の名字&amp;7%player_name%
" W/ J^, F2 m# J. L9 dl0 Z, _/ r⑤[openguimenu]:打开其他菜单—— 设置此类型可以打开其他的菜单/子菜单(仅限于DM自身的菜单)
) H/ zy/ g# ]+ b0 O9 g* N8 W例如:[openguimenu]&lt;空格&gt;menu打开菜单menu$ h4 N' u% ]/ V: [0 P8 t
⑥[connect]:将点击的玩家传送到BC子服—— 相当于跨服,只需填你需要跨到的子服
! Kq9 M8 l3 |- l" s例如:[connect]&lt;空格&gt;生存服将点击的玩家传送到生存服/ M* z6 L/ G8 t& P7 J) d. O
⑦[close]:点击后将关闭当前GUI界面—— 类似于BossShop的(bs close %player%),点击后会自动关闭当前GUI界面
* K3 n, u8 w: N( q$ _例如:[close]执行后关闭当前GUI
7、延迟指令
  这也是dm插件比较突出的功能,延迟指令让你更加灵活使用菜单功能,你可以设置各种类型的延迟指令,执行类型请看&quot;6、执行类型&quot;  你可以用执行类型来做什么?你可以设置一个玩家给予临时飞行后再延迟指令将他关闭。也可以设置在线奖励,例如玩家在线后需要点击,点击后开始倒计时,计时完毕将会给予奖励等等~ 有了延迟指令,你可以随心所欲来设置各种特殊功能。格式为:&lt;delay=(延迟的tick数)&gt;给某个指令添加延迟tick的计算: 20tick=1s
2 \9 E$ M& R+ R$ p例如:- '[close]'- '[message] 距离这个菜单关闭已经过去 5 秒了 &lt;delay=100&gt;'$ X; C+ O/ W. Z$ M2 A3 q

: e( p# C/ W( X2 j4 g
总结:当你认识完以上内容,已经对DeluxeMenus有一定的了解,这些只是会帮助到你接下来的教程中!" V6 j+ D& S; D! y# I. r
5 p5 J8 W7 o; r$ H& v6 K) q
- V, R: C2 k) g1 `. z( B- l
* N8 {0 k6 y1 @- _$ M4 X
二、开始创建菜单


1、认识创建种类
+ }, D& a- e" w0 i& P! Y$ E" K

    对于DM插件的插件菜单,有2种方式:
) @, d, G' J# h- V& e# j  ⑴ 直接在Config插件以及编辑。, e8 ]. [. z8 m+ }
  ⑵ 使用Config辅助来重新创建yml文件,分开菜单,每个菜单对应每个文件。
7 W: L3 i5 v0 U+ Y8 a 
" l& a' U; p$ g9 X  对于创建到底要选取哪个,这得看平常编辑菜单的习惯。本夜幕推荐使用⑵方法,因为每个菜单分开文件,类似于其他的菜单插件,好编辑不辣眼~% t# G9 D# L- l& e
  而且当你编辑出错后,只会在那个菜单的文件中出错,并不会影响其他菜单。
* X3 [' R& r* r) X5 kU" n6 u9 Y
2、如何创建
. Y: ]; h% b0 ^, Ho1 G/ }
方式1的创建方法:/ e/ L0 |: i) ^1 o
   直接按照Config原格式整齐对照在下面1 ?' \* k8 {: N, P3 v/ W

! z0 X7 c+ j- K$ L7 {" Z! VP7 |y1 `
方式2的创建方法:
Z8 y5 Z. p6 q" U0 U# P3 W
   可以直接新建yml来编辑或者运用Config来创建 
7 I; xW2 ?2 B. m% N
C$ A! v1 Q! O! j4 i, v& h- Z0 q' r5 n5 L6 \& _' P2 t
例子:
; K$ j1 i' i$ o% g, E2 j

代码:

  1. check_updates: true9 z0 o: p- r8 A2 H8 V
  2. gui_menus:( R- T7 i2 C! ^) P
  3. menu:
    ~; l1 j- Q4 ?' c% j& I
  4.     file: menu.yml
/ M6 Z+ Q5 |/ B5 _% O2 Ra
check_updates - 是否检查更新- U. ], R2 r8 P3 Y5 _
gui_menus - 下面为需要创建的菜单. {+ c0 V$ }2 e7 z
* ]; |! C. H8 u9 C

& H# B1 l+ i, \5 q0 l# X: |创建的格式:([]=一个空格)' S3 _/ E1 |N* [+ a: [
6 U& w, l8 N0 z! o
1 r8 J, A. D9 V
[][]&lt;菜单名字&gt;:0 G`! O- D2 c/ j% U5 v6 _
[][][][]file:[]&lt;菜单名字&gt;.yml
, b4 g4 U% V- i& {* o# k8 z1 N; s- S, B( s, ~8 U

# s; i$ X0 d2 g9 \' L6 r
同时创建多个菜单:   
* T# a% p0 X, v4 D3 J[][]&lt;菜单1名字&gt;:
; Y9 u6 o5 [" z[][][][]file:[]&lt;菜单1名字&gt;.yml
0 J" \# @+ C- a' u
[][]&lt;菜单2名字&gt;:
" H9 x) |$ P. f" K; `2 `
[][][][]file:[]&lt;菜单2名字&gt;.yml" }# C) {( k4 T" _$ U8 G
[][]&lt;菜单3名字&gt;:
% r, r; W" lL' P# @& {, i+ `8 v[][][][]file:[]&lt;菜单3名字&gt;.yml. L) X7 k( s5 uF3 g" G
/ r2 G, X) }/ Z- l/ i$ n$ D+ ]x
完成编辑后,保存一下Config,并重启插件!
# \) o$ h; U! O0 Z( H. c1 Q# W这时候你会看见在文件夹DeluxeMenus上生成了另外一个新的文件夹gui_menus
' d; P3 v% u$ I: M打开它,就能够看见一个新文件menu.yml! y0 x& U; e4 ]7 w* v6 q
这个文件就是menu菜单的配置文件,你可以编辑它
* M7 Y; p8 J, q& w3 o. ~+ Y. J7 F7 K. E$ C# S

6 U( ^6 P% G' c5 Q9 k6 O9 X


1 j# ~9 A: H/ r, y$ C: J注意在下面的教程中:都用方式2创建的菜单进行讲解
+ _( n- M" U+ f" N' Y6 ^% a

" @/ L: Q: M7 F6 W3 j
& ^. r! }3 ~9 d) H% m
2 S/ `1 Z1 Z( c" U: C

$ f- w7 Kz% fR2 s
三、认识配置文件


1、认识Config
9 v6 ~* ~# g' S4 {$ n1 m
   当我们用方式2来创建菜单时候,Config的作用就是在于创建以及更新的按钮* I5 P, `" i) h$ A/ g
3 O* d@2 v' `8 D% c+ F
6 e& \$ m9 c: |M5 o# u- [/ s
Eg:
* I: a7 g3 b! l# D6 Y2 K

代码:

  1. check_updates: true+ k$ x) g# L" E& r
  2. gui_menus:* H" f' s& E0 j: }
  3. menu:
    1 }5 J* S+ C' M/ d" L8 H/ l
  4.     file: menu.yml. J" J, b- u! G6 R

/ E/ A' l+ x7 x( |- t正如上面,check_updates: true #是否检查更新
9 o9 S% r7 m. ?. l) R2 I下面,gui_menus为创建菜单- ^# d* G8 T; [5 [! a. O, c4 X
6 M- S* u3 \- X
, C/ @@; K5 R+ t
对于DM的Config我们就认识到这里,要懂得如何来创建(请看&quot;二、开始创建菜单&quot;)9 jC, W# S3 E2 R; l

2、认识'&lt;菜单名&gt;.yml'" c( e; p- xe: N8 o

  这个是整个DM插件最核心的文件,这个篇幅,我会详细讲解是如何构成DM的菜单项目的。6 x7 q$ E* }) p
  当运用方式2创建菜单后,这些&lt;菜单名&gt;.yml就都储存在文件为gui_menus,你可以打开它来编辑。
& _; m( a7 |" U% F4 \* z( b2 y; W. o' c
3 {! ~5 q; v/ W! C
我打开了我弄好了的menu.yml
: U2 q( K* L0 U& Q8 B# t9 `0 f" G

代码:

  1. menu_title: '&a&l主菜单'
    1 E' [. p2 M5 e: U) |- z# ?6 ]$ l
  2. open_command: c
    # V[0 zOJ; R
  3. size: 54; _8 M6 v# A9 u( L: f7 o! w# d0 A
  4. items:8 e2 ~[! x$ C- |+ d8 V
  5. '1':
    9 J3 {% Z2 O+ w5 X7 W
  6.     material: 355
    / CW7 m6 _7 ?, ]* j" [1 y
  7.     slot: 0
    : z! E) ?& R9 G& G& a* X
  8.     display_name: '&6家'" W+ A, w. }7 O# ~& V0 Q
  9.     lore:, J9 k! N3 T/ c, k; c; r5 s7 t
  10.     - '&a左键 &7| &f设置一个家': w4 jl1 R, S
  11.     - '&b右键 &7| &f回到已设置的家' 5 U; F! f0 v+ O~# M- n9 U
  12.     left_click_commands:# w6 M: v: l6 I5 W
  13.     - '[player] sethome'
    . w3 }3 Z^1 ^! i/ M+ l) b; b4 E
  14.     - '[message] &a恭喜你设置成功'   
    3 P5 g5 Q7 k) F
  15.     - '[close]'6 i& B, Z0 W1 D& Qp# U5 `
  16.     right_click_commands:2 A% a6 j! B# i& d
  17.     - '[player] home'' G4 v- t4 Z" W' X
  18.     - '[close]'6 K6 r3 M7 J# A0 O9 L+ q0 f
  19. '2':7 z: W& v" V9 B% C4 gj
  20.     material: 545 p6 P" p+ q3 NU4 \+ |. U
  21.     slot: 1. S( L9 C( S6 `6 U- t3 H
  22.     display_name: '&a每日礼包&7/&b每月礼包'
    5 Q: ~- H- i! T' R9 Y. N
  23.     lore:
    ; b$ u/ W% Tb+ @
  24.     - '&a左键 &7| &f领取&a每日礼包'
    : Z' q; t* B3 G& G7 D
  25.     - '&b右键 &7| &f领取&b每月礼包' ; L3 O( }" Y3 F8 }; B. J* jg
  26.     left_click_commands:) R, r* z1 k4 X* C/ X4 s9 X
  27.     - '[player] kit 每日礼包'
    ! W/ uH3 f3 F
  28.     - '[close]'7 j& O) i: OF1 V" l
  29.     right_click_commands:
    % C_$ A& Y/ T6 G% ^+ m
  30.     - '[player] kit 每月礼包'
    + f6 c7 D9 @G! S0 \4 r! o
  31.     - '[close]'

$ B, p. T: v# X8 K' F虽然看起来很复杂,但是认真理解一下应该可以懂!
7 Y! r% Q/ b* u) t
) I. ~3 ^* `" H6 ^8 W
* C0 Y( ]; ?1 O1 H3 Fmenu_title | 菜单的标题,可以用彩色代码。% |4 E4 y* s( T# s; Q: }H

" }- M4 Z: j- |1 t; \( x: @" R2 |+ ?% V' K; D

9 d1 z% j1 V5 U) C) S' |
open_command | 打开的指令(别名指令),可以自定义设置,这里我设置c; k3 R# u2 H: u1 o
+ {* u" M6 I- Q( K^
: \) z/ HT8 {" M% k

2 d- s8 E6 d4 F. R
size| 菜单的大小,最大为54
$ R3 v6 S- @- G; h大小类似于箱子,所以可以用箱子来排版(详情见鄙人bs教程排版章)% L* X! o9 m, [

0 D% ~8 j# b$ T- u! |g* Q) H9 h# p4 S: r+ X9 m: R3 v
item| 以下为菜单内项目
2 f, r. D& Z5 g% I7 ]9 t, J+ [' L$ U9 m: M" g* v' Q
' f; p0 F% G+ P& l+ kM8 N$ |
'1'| 项目的代码|排在前面菜单优先加载5 }, r. w* ^/ v( t; [' i" \

) \8 K4 z' K& I' c" b/ N0 p; I: a; \# y: S
material| 项目的类型种类,相当于显示在菜单上的ID,可以使用物品的ID或者英文名称+ _" Z+ o4 O2 [

) t* L- ?v" Z5 s- D7 x+ I这里我设置了显示的类型为床(ID=355)和箱子(ID=54)
: W: w' a: q% Y, I: M6 u6 i' e
2 [q, \- V( l$ Y/ r! v/ ]
9 h1 l) [8 A0 M3 ~" o
slot| 项目的位置(这里的位置和其他菜单插件略有不同)[0~53]
4 ]+ j; E4 d( B' u6 x9 w首先不同的点在于起始位置的数值为0,这里给了一张位置发布表来更好理解!
3 z+ F. Q5 z1 v( h. ?& Z
% J; A0 f3 `2 z/ J' {6 c) Q

* I7 j& D9 o8 I* @" i1 T; `/ X3 H# |, C- f( w! [/ q2 d
display_name| 项目的名称(可以使用颜色代码及变量)! R- A% ?% i; b$ q0 d( m

' B0 f" S3 m. \0 G( B6 H1 x( P_9 q$ u8 Q
- ]# }5 s4 n6 @9 r9 d2 T
lore| lore描述(可以使用颜色代码及变量)' e7 e/ H! h, r: R( f7 ?, x
) ?/ b# f( z0 S+ t0 G; |& Y
$ g: m3 MJ3 Q6 I

5 Mq; R6 a9 m0 Q7 Y! y3 V. A
left_click_commands| 左键执行指令,下方为左键点击该项目后执行的指令。
) o0 r1 C& l3 H! a, J- g
例子中,正如上图,左键将会设置家* W. q2 y' g8 ^- v
5 O# K- \9 s3 k, T3 i
right_click_commands| 右键执行指令,下方为右键点击该项目后执行的指令。% |9 h$ U3 x, `: y4 u6 D- [% N}, i
例子中,正如上图,右键将会回到家6 m' P; _% v0 D- }; t9 D# e' e

$ J7 ^J( ]2 ^0 s其他:
0 C( t! r9 y; y+ y9 W# ]+ S! M. f1 J7 P. D) A& ^

: q/ j& }$ x% {& P4 ^5 M4 W6 yopen_requirement| 打开条件设置
, _( b- cl, _+ P4 pdeny_commands | 不满足条件设置7 C' W6 n# ?: h5 t! H
这2个下面详讲% K$ f: r$ _5 ?2 [9 L1 T

' _3 O& ^1 dL
data | 子ID1 B! X# H" W% E. t& z$ a' G2 }
4 ?' K' M% ?' ?

$ l# Y6 G7 g* J2 N4 W
left_click_requirement | 左键前提设置; S" I- r. X; u) v5 }8 h
right_click_requirement | 右键前提设置4 t& C6 Q8 {6 p
这2个下面详讲
0 K5 ~; [3 I8 x( a0 w" j* }" `% A; e$ B

& R' a5 o" E4 }3 L# k$ ], m
amount | 显示的物品的数量. ^0 q7 f4 H" _# g2 Z
在菜单上可以自定义设置物品显示的数量(0~64)# T3 X4 \. X: j! T- F# V' Y

( y1 w3 M' H" A9 C: E6 Lpriority
| 优先级
5 T- A+ t& }+ _/ g2 m" ?) Z
当有多个项目同在一个位置,优先级高的项目优先显示,可配合可视化(下面详解)0 Y3 o5 w3 l+ a- U. s4 t9 ~

) W* U$ Z5 l# {) g8 {V3 M: N~: w0 b+ f3 }' R1 Z0 g
updata: true/false | 是否刷新变量* O1 y+ r: _: z, a
刷新GUI的变量,你可以用这个来制作时间显示, j. v. z( J& ?

2 A$ K8 r& u5 K& N& Y
" ?% A" W- [$ |4 lhide_attributes: true/false | 是否隐藏物品的属性) S+ g3 ^! D" p' L: B
hide_enchantments: true/false | 是否隐藏物品的附魔
0 ~; \) R) Z" P: P) Q$ {hide_effects: true/false | 是否隐藏药水效果% Yo/ C$ ^' D& a
4 K% i% g! h& Q; C3 }+ a1 hz
$ }4 J3 p& S4 \# \. X
banner_meta | 可以设置旗帜的颜色和材质9 q6 B' A3 @; i
旗帜图案表
( v% x4 [% a$ s. R2 x9 l
' P8 g/ j! B7 C3 R5 M* ?7 n4 `
: z8 t3 z6 c/ [. i2 c2 T+ x

, |% ]* {$ t! d% b8 @1 _3 U
: V, T9 G- q% f( q
四、优先级-priority

什么是优先级呢?
7 N/ G. K( z3 [# f3 ^: g" Q在DM插件的优先级中,你可以实现同一个位置放置不同的项目,而优先级,就是用来区分这些项目的先后顺序,优先级单独使用可能没什么优点,所以要配合“五、前提限制”9 I6 [- |+ H$ k

接下来我们结合一个例子:L8 d( ~, y+ C) `: J/ \2 B

代码:

  1. 1:
    * m& h. F4 W4 r. o3 I& N
  2.     material: 417 i4 i/ ]! w$ r2 B/ u4 W% z( g
  3.     slot: 5
    - p$ B$ Y) }# h
  4.     display_name: '&6哇,大财主'8 `3 K3 P$ q5 d. f* @- y9 I; m
  5.     update: true
    " C/ o6 ]& q5 L( Q, _% L
  6.     priority: 1
    ( H- z) y1 M: f8 s# R4 u
  7.     view_requirement: '%vault_eco_balance% = 6666'7 D' |3 b! m# Fa$ ?
  8.     lore:/ k$ ?q: e7 G$ v% B9 T
  9.     - '&7当前显示的是第一格图标'
    " n4 G4 D6 q/ L6 j4 K, e3 i) w
  10.     - '&7你应该拥有&a6666&7游戏币才可以显示这个图标'
    2 o9 G3 Q( Q& ~7 g/ X: P
  11. 2:
    + v, I6 a7 W; w. v% [7 i! s
  12.     material: 371e9 W8 H1 Q; c9 d4 X
  13.     priority: 2 5 e0 G' m: r* I2 y- P, k
  14.     slot: 5; \2 o3 ?+ U+ K7 CH6 e# p) v
  15.     display_name: '&7你好穷B'
    4 E/ D9 E6 [c2 V/ S2 k2 T
  16.     update: true% A4 a* W' C9 F1 x, T! m' }2 H; }; O
  17.     lore:6 Q% F8 ]. z# I2 I' \+ @- r
  18.     - '&c你只是一个穷B罢了'7 {+ X3 w8 D4 K. B8 |. q
  19.     - '&7当前显示的为第二优先级'
( ]. N6 a, o+ S, |: [* k
这里可以看见,有2个项目名字分别为1和2,优先级分别也为1和2。插件会先优先显示1项目,但是1项目设置了前提限制,(%vault_eco_balance% = 6666)当金币等于6666时候会显示1,如果不满足这个要求,则显示为2
+ D, Y$ Z5 G; T' U7 n
' E3 Tkd7 a4 J3 D0 s
& |. x9 Z, O2 U4 m. O2 @& t. V

8 f, r9 o1 w* l4 h+ |4 Q4 ]- I; a金币不满足无法实现项目1(优先级1)则跳过来到项目2(优先级2)
" j3 d" v' h* j, y: Z9 b8 S; X: b; N+ h. f/ }$ U4 j7 B2 f

% Z" ?+ i8 c- t# Q' O当我自己重新给了金币6666后
1 d5 M+ D. F5 `6 o: q5 Q
; F6 N# S! B1 ~4 e4 Q0 b* X
5 |9 c/ D, `4 j6 H% J+ @
6 ~. e% L[) y, D- i7 G
& o, W) J) T0 U: b; V+ l
五、前提限制

前提限制分为2种
9 u: r6 z( ~8 V# L1) 点击限制2 L5 o" ^7 ?' J) g; B* Q
    - 点击限制可能十分很容易理解,就是玩家点击后,当你设置了这个限制时候,玩家就会受到限制相应功能被束缚。比如你设置点击需要金币达到50,而玩家不满足,就会关闭菜单并提示玩家金币不满足* T6 e/ \" z: f" W6 t
% B. `" e& @- a7 W9 ~( f
& }J# Y7 M% E7 ^( n
2) 浏览限制
- m5 u" a6 G. v9 V2 k0 ~
    - 浏览限制,当你想要看某个项目时候,如果设置了限制,玩家达不到要求,就不能够看见那个项目,这个功能就是可以配合优先级来设置多种多样的菜单!9 z$ o3 W) |9 R/ _

1、点击限制
' m6 ]% V7 ]) S: h$ n! K$ W# A
5 \' U1 ~2 }l: B; f# I( k
例子:, p7 R! V* G4 a. L+ J

代码:

  1.     left_click_requirement: 5 d! b" S' l/ `4 g
  2.     expression: '%vault_eco_balance% > 666'
    - b6 S5 G* `8 r, f7 o) i8 Z3 {
  3.     deny_commands: 7 _9 M' {8 m, x1 O5 _
  4.     - '[close]'. |2 u& P$ D& v( X
  5.     - '[message] &c金币不足666'
1 r- H: X9 S: C: [H2 z* i
这里设置了左键点击限制(要设置右键只需将left改为right),expression为限制的权限
0 r1 Y% x5 L" F" Y! s

代码:

  1. %vault_eco_balance% > 666
意思为金币需要大于666* q8 k' @6 ^6 U, m' e

8 ]& X4 k7 M+ [* m8 n7 y2 S. D/ n: w
通用的格式: &lt;变量&gt;[空格]&lt;状态&gt;[空格]&lt;数值&gt;" H6 {! f" A. q# W0 |
&lt;变量&gt;:变量为Papi插件的变量,DM插件支持Papi变量,请去变量表(上面已给出)查找
8 h! Z( S4 W' ^: ~3 U6 I&lt;状态&gt;:判断的依据(高中数学书应该有教)
g8 \1 b: _( M. F+ |" g/ [例如: &gt;大于&lt;小于=等于&lt;=小与或等于&gt;=大于或等于5 M5 @, ?& f1 `) r
&lt;数值&gt;:通常与变量相对应
+ v5 }3 o, r# T
2、浏览限制/ y/ T" s8 _6 u' v7 Q


/ z; d7 C6 C2 F$ _) W例子:5 s8 S7 _( p6 T9 R

代码:

  1. view_requirement: '%vault_eco_balance% > 100'

7 g# v; d) J2 lN浏览限制为view_requirement 后半部分和上面的点击限制一致! K3 _. k9 c9 P! c
意思为:只有金币满足于大于100,才能够让你看见这个项目- t2 G5 d, Q/ L6 _' Z/ ~0 }
6 ^; k9 i' |: s9 _' _. P! M@* M! c
0 G' I/ g$ y$ K. b. v- q
其他例子:' ^( g' d) ~7 C5 r( m" `

代码:

  1. view_requirement: 'BukkitPlayer.hasPermission("some.permission");'

1 W$ w& X5 R, ~: N有权限some.permission时候,才能显示0 ~N9 j4 D* F3 M% {

8 c0 z8 n) f/ C# T* pF8 |5 l* ^+ R( _& d& ~
限制的类型多种多样,这里我只列举了大部分平常使用的。这些限制,可以让你制作VIP氪金东西~

4 B6 C! ]& {. Fq4 {' C. [

8 p# ], J# r' e+ N# g; s( Z( Z- I7 y; K0 j9 }! h/ f
z6 G7 h8 O; v7 t+ t' e
二章:实战练习
: W7 c: x8 W/ D2 \7 ~% J; o/ Y
% n( e; j) F3 q- Q. q# Z* v, j/ y, t" c2 U/ z% t# y- X; \
一、左键|右键 类型指令

-1、认识左键|右键7 D& c! C- V# h( z0 |

普通的判断指令
( m& w3 j$ A4 Z6 l) [, wa
left_click_commands| 左键执行的指令为$ H1 B, ^1 l* a2 dI
right_click_commands| 右键执行的指令为x- D1 b5 a/ G& p
这个功能可以让指令输出成2方面,一方面为左键输出,另一方面为右键输出。当你鼠标左键或者右键GUI上的项目时候,会输出你所设置的指令!
- l6 Y1 ~2 m$ a) ]
特殊的判断指令(需前提条件等)
! L& F7 U% m4 h8 n+ G- m
left_click_requirement | 左键前提设置
* G( P- j5 R8 G- Aright_click_requirement | 右键前提设置0 B# y/ Y, }) z. |$ ^$ ~2 ]$ x8 `
特殊的判断,也是为左键右键来判断,但是这个类型会增加判断前提,你可以设置一个权限或者条件来限制玩家左键或者右键,当玩家达到你所设置的条件才能进一步输出左键右键的指令和功能!

W) u9 U0 M% g# N

-2、普通的判断指令(左键|右键)
+ S! g) H- U# H0 s7 o
例子:
7 k7 G" p6 `, E% T' v

代码:

  1. 家:3 f+ f6 V1 IQ' B: ^0 E
  2.     material: 355
    4 L. [2 M- S/ r2 L* f
  3.     slot: 03 _" Q6 z" N% C1 F: k5 q, d& x
  4.     display_name: '&6=&b&l设置你的家&6='
    + ~& @9 S3 b7 B+ _7 ]2 F
  5.     lore:* {' J, fk6 ]( F( V
  6.     - ''
    7 k2 C! c" N, B* [) z( _3 {) c2 ?
  7.     - '&7-&f设置家&a左键'
    $ i5 f; [9 Q: T8 u: w5 s# i$ o
  8.     - '&7-&f回到家&c右键'
    9 m# A" k9 p/ n5 K- g2 `/ S4 m
  9.     - ''
    - g4 D2 m) c: @) t; a: e
  10.     left_click_commands:
    7 x. k$ s- H7 [9 m0 U, V}# L, Z
  11.     - '[player] sethome'
    ( ]2 O% C) Q% Y# b
  12.     - '[message] &f[&b杜蕾斯菜单&f]&a恭喜你,已成功设置家'
    4 v' X8 b4 s8 z/ B2 }& rb' k& t
  13.     right_click_commands:4 l; U# c' }: A$ s4 r
  14.     - '[player] home'
    : f( e; v: p3 v8 l; E; y
  15.     - '[message] &f[&b杜蕾斯菜单&f]&a正在传送....'

! T( _' r( o$ M4 z* z" G* n( U8 y2 a/ {# M1 ]
) TH: v* L7 I- ]Q
这个例子的功能就是,一个项目可以实现2个功能,设置家以及回到家。指令分别为sethome和home,类型为[player]2 h0 Y! E9 ~* o7 Q' s
, r3 T" Y1 a: s% y

, m7 W3 m6 y/ e' c7 _& c( I- o' L3 L图片说明:
5 E" @! L/ E4 p% W' W

8 i6 ]5 [3 k1 W7 v+ z/ }7 o在菜单中看的效果为这样
3 L2 z* R/ g, ~# V( x6 w) L, Y- P5 y& P; Z' X
2 L6 L# e/ M; Z6 j) _8 f" h
左键设置家并发送信息:
, n) b" ]9 [2 ^' r2 Q* @
* i! P. w7 T' e$ T
1 B8 V* l$ R7 N0 H# w

; i8 }Al7 @8 f& o/ D2 ?; @右键回到家并发送信息:
4 M9 Z3 u: I1 E: r% X
# o8 E- I+ |: j, X9 L5 I' u
; h3 `$ N) P; W8 e) ?6 Y
7 Q; e$ w) C1 M- E

-3、特殊的判断指令(需前提条件限制)
! D' E( v9 C/ {/ a7 ^8 ?
   
特殊的指令判断,要配合前面的普通指令判断,设置一个条件,当玩家能够满足,才能够左键右键执行输出!
3 f- n* Qu+ Q

# q- e# L7 Je& [7 }例子:
( ro' g; c9 p, ]7 B3 s

代码:

  1. 特殊飞行:
    - j: v- I" b: T7 {/ V: @
  2.     material: 288# K+ T. S/ ~Q8 N! a
  3.     slot: 0
    ! Z/ i: l3 x/ E) _
  4.     display_name: '&c==&6特殊飞行&c=='
    , p; w0 x# m; Q; ~' {0 TJ
  5.     lore:0 ~, B) f3 @5 |% z( [1 l
  6.     - ''
    ' l! e. r. N- b9 O- ]$ W- f$ w
  7.     - '&a左键&7开启飞行&f-&c需要用户满足金币超过666'% n- ]7 T7 R& x9 \
  8.     - '&a右键&7开启飞行&f-&c需要用户拥有权限pcd') [. ?2 K: T5 G4 l) I, _9 M
  9.     - ''
    1 ^! \% oN) m; w# Q2 L, O5 \6 m
  10.     left_click_commands:) X& R- i* ^, N$ E
  11.     - '[close]'
    7 }5 h' a0 B6 E% i& Z- {, E. q& w
  12.     - '[console] fly %player_name%'" Q! O' e6 k0 C4 x$ z
  13.     - '[message] &f[&b特殊飞行&f]&a恭喜你,飞行已成功开启~'
    % s# p|$ e9 _2 C# Q
  14.     left_click_requirement:* b6 f7 q) _& H; w5 Y/ T
  15.    expression: '%vault_eco_balance% > 666'( GW: U5 F, k9 `
  16.    deny_commands:
    . ]/ Cy. Q% X+ J2 v2 E
  17.    - '[close]'
    & c+ [; a* ~: tW) k) \
  18.    - '[message] &f[&b特殊飞行&f]&c金钱不足'- w3 @: K, b+ ?! d
  19.     right_click_commands:0 ]: \0 Z) F8 F) j6 J0 b2 W: Q8 q
  20.     - '[close]'
    2 [8 ~" g4 `' s; `# g3 u( M
  21.     - '[console] fly %player_name%'
    7 F( ~- W- }% R% c2 Q8 V
  22.     - '[message] &f[&b特殊飞行&f]&a恭喜你,飞行已成功开启~'+ V% q, @( m. ?( j
  23.     right_click_requirement:
    9 y% e' A$ ?. N& W# |- o, w) Z4 o+ F
  24.    expression: 'BukkitPlayer.hasPermission("pcd");': M% `" A" D, ^, e
  25.    deny_commands:V; U( N. q: D$ D
  26.    - '[close]'
    , Y( N, R8 u% o: o
  27.    - '[message] &f[&b特殊飞行&f]&c权限不足'
2 v% }. l2 I" b+ X. s) q
说明:) w4 E4 n2 {, Bu! N
  在原先拥有左键和右键的输出后,添加

代码:

  1. left_click_requirement
   或
8 i3 Q+ a3 T$ L( _" Q& M% {3 s5 e

代码:

  1. right_click_requirement

; b$ s+ t/ q! V* @s3 {# I5 T# _6 j这2项目为输出左键/右键需要的前提,这里的前提类似于浏览限制。
' A% F& W: S8 ~! p" A9 m1 X% @: z这里我分别设置了金币条件以及权限条件,分别放置在2个判断方向。* _8 H' K$ b1 V5 u& h
! f; y# h- Y& o0 h) s6 j, {
lore尽量向玩家说明清楚3 c$ @) G/ U/ W
# W0 ]" y+ t9 o% U]* W0 S

" h9 u( X2 y% M* S0 o9 w左键后:0 Er" V/ k; P/ M! v' q) X

/ Z2 l5 L1 c4 C) x
$ @! HS' a3 Jv8 h7 c3 v. r% x( ^1 H6 x' a' E7 u?" Df/ {
右键后:
! g2 n7 l! t. D
! g# S6 z2 \( U: @; J
5 z0 p0 }( v: f+ M" a. P

: j~3 I. E2 L" z3 C7 v( f+ [# E这里有一个注意的地方' R7 D8 f1 m- a9 w

代码:

  1. deny_commands
这个为不满足条件后输出的指令,这里大部分我们设置[message]类型的指令来提示玩家不满足条件
4 l, X) I- a% Z8 |
7 m+ s& N. [( \8 D$ g4 U
4 [3 J/ g0 Y0 \效果图片:
: v; Y- A5 Z# v3 R- M`! `
( K8 i. c* d9 Y( I

5 I. v! L& T+ `! n- v# j+ _" M- S8 i2 n$ l( J
' ^; }. L5 M$ |$ x# O

P& a/ H4 ~$ }, s1 K
( [8 o1 B* `0 g4 b% j" g7 r3 I
二、出售/收购 商店的运用

-1、开篇
5 z. I& k0 V" e$ {! A+ M4 O
   
商店,一直是生存服必备的东西!dm菜单插件也可以轻松制作一个完美的商店,足可媲美BossShop老板商店插件,它的优秀之处在于左键右键来区分出售和回收或者单个回收或者多个回收(请先看[2]章‘一、左键|右键 类型指令的运用’再看此篇幅)+ W; s8 I) H4 a1 h6 m3 s
   ②在这个篇幅,将会有1 {; x* E$ B0 S/ D4 u5 X
  • 一个项目 出售/收购 的项目
  • 一个项目 出售(左键/右键)和收购(左键/右键)的项目
  • 一个项目 出售/收购 项目 单个出售或收购/多个出售或收购 的项目
  • 一个项目 出售/收购 项目 单个出售或收购(左键/右键)和 多个出售或收购(左键/右键)的项目}& l1 C9 f5 ~1 ?5 t, Y

-2、实战1(出售/收购)9 J. Y9 `% |3 N9 B7 a, F

出售单个物品例子:3 m) Q$ [8 ]9 d% |6 Y

代码:

  1. 单个出售煤炭:+ q^8 s) k& H* v. Y6 {5 P
  2.     material: 263
    4 w' i5 @. n# V& r& e
  3.     amount: 1, i# [4 x' }# r% O) X
  4.     slot: 5; b5 f1 `! i' @% V+ ?
  5.     display_name: '&7[&b出售&7]&a煤炭&f-&610&7元/个'' T4 a* O% |/ E& [2 L
  6.     lore:
    ) K# n8 c' k- X+ {/ W# R
  7.     - '&7点击购买'
    $ W% uK# M( D8 S& i
  8.     right_click_commands:! k; B. ]D+ b( v( u* f* H4 q: A
  9.     - '[console] give %player_name% 263 1'
    ; w" b7 N9 @5 H* S2 [8 c$ Y
  10.     - '[console] eco take %player_name% 10'1 b9 e; t, d" u" O" H6 v
  11.     - '[message] &a恭喜你购买成功'! j- w! a* U: D% c1 Q. ZI9 k+ T
  12.     - '[close]'3 X- p; F2 {2 H- i
  13.     right_click_requirement:
    7 n/ }; G. j& B+ ]" N( N
  14.    expression: '%vault_eco_balance% >= 10'
    # G% Y- f3 A- r. u5 `! I; Z) K! m3 l
  15.    deny_commands:
    4 U" J& S: z6 F
  16.    - '[close]'
    % ~/ _$ p! s. X! W8 Q& u) _$ c, R
  17.    - '[message] &c金钱不足'
    4 w' U% x5 w" X9 q0 ?3 l7 R# w
  18.     left_click_commands:
    ' @5 JA' c0 E+ ]) x5 J4 x
  19.     - '[console] give %player_name% 263 1'% I! i2 O- @3 R7 }; g
  20.     - '[console] eco take %player_name% 10'
    7 a. d, K/ YK' K7 i
  21.     - '[message] &a恭喜你购买成功'
    / y' P3 E2 @+ E; @$ z. [5 y5 N
  22.     - '[close]'
    , Z1 J: P$ `5 d1 k3 d
  23.     left_click_requirement:. O9 i2 {" g5 F+ m9 C1 p
  24.    expression: '%vault_eco_balance% >= 10'2 q& c, e6 [0 `: |, F
  25.    deny_commands:! C3 a- ]. C7 I& ]6 ~& g
  26.    - '[close]'% |; ^( k( a5 b, ~5 O! I
  27.    - '[message] &c金钱不足'
" r2 Z& U! uV( @: S- v
效果图:6 B. F" u3 L% ^/ x1 Z
+ \( \* T& [. p9 l

1 F1 V0 k7 _! }. o, z5 Z' w, K$ f9 sS+ z/ i8 z$ w5 y% L- e
购买后:7 P7 w) Y, WM; D& q) q

( _4 N8 K. Y4 B% @L- J& y& c8 Aq5 T2 R& Y5 }$ |2 J
2 }/ gl3 P8 [8 D; H" {
详细解答:/ y1 [' r6 ~2 _5 n* p3 T1 M& v" H7 L
   此例子出售的物品为煤炭,价格为10元,所以我们的前提条件设置为&gt;=(大于或等于)10元才可以触发相应的指令,指令为give 玩家煤炭以及 eco take 来扣除费用,适当增加[message]的指令类型来提示玩家~
( R" r6 i* R+ S) e. N% @& @
# u+ W! K# \0 Q+ |- `2 \* {
! [% T7 x; A( W. BG" I! T}
回收单个物品例子:- e8 V6 O( k, r0 q2 m: r

代码:

  1. 单个回收煤炭:; n% h7 w) d$ i1 p
  2.     material: 263
    1 u4 h/ h( ]$ }0 C* c1 z8 B4 a; d
  3.     amount: 1
    / m: o8 e' x2 HH4 H. p3 B7 z
  4.     slot: 6
    ! U_+ N) A, \g1 }4 `
  5.     display_name: '&7[&b回收&7]&a煤炭&f-&610&7元/个'! H* j3 @6 K9 A+ tv6 y4 b, }/ K
  6.     lore:
    & J- }, iq! R- G& \4 r. y
  7.     - '&7点击回收'c1 ?1 \; r3 d: n( O
  8.     right_click_commands:
    0 F: |& N4 O& A6 U) i5 m6 r2 i
  9.     - '[console] clear %player_name% 263 1' # 这个为清理玩家背包一块煤炭- D5 c6 t" N4 s! G, @
  10.     - '[console] eco give %player_name% 10' # 拿走玩家煤炭后,要给玩家报酬
    5 ~* M) T! X; d9 l, ]
  11.     - '[message] &a恭喜你出售成功,获得了10游戏币' # 成功的语言
    - C5 m5 V! e4 _0 N
  12.     - '[close]': H7 p. ?: E$ C0 P3 }
  13.     right_click_requirement:6 o* B% u0 V8 ]; x: k
  14.    expression: '"%player_hasitem-mat:263-amt:1-data:0%".equals("yes");' # 帖子详讲* p/ m7 G% q0 }: U2 I( t6 G9 h" n
  15.    deny_commands:1 Z8 a/ |2 H4 [, ^! u
  16.    - '[close]'
    + ~( y9 a# l2 {; O' K
  17.    - '[message] &c物品不足'
    7 ^; v8 b. U1 S# |
  18.     left_click_commands:
    # N. N1 n4 z4 P9 O& k8 J
  19.     - '[console] clear %player_name% 263 1'H- G% v! m6 `4 l) y% k) s
  20.     - '[console] eco give %player_name% 10'9 [" b7 z6 ?4 V9 `( i
  21.     - '[message] &a恭喜你出售成功,获得了10游戏币'
    8 P\. C4 J. b, ]$ _7 c
  22.     - '[close]'. s* n4 T! z7 B% w, K7 f
  23.     left_click_requirement:
    " r8 r6 s. d% J9 `
  24.    expression: '"%player_hasitem-mat:263-amt:1-data:0%".equals("yes");'; k9 O/ ]) Bi2 y+ D1 C8 w0 {6 Z
  25.    deny_commands:$ P2 \( y) V9 L
  26.    - '[close]'0 e3 p. Y1 g9 {6 A
  27.    - '[message] &c物品不足'

2 U6 T) Q2 z8 J& i5 A6 [配置里面有些地方不同已标注好,回收和出售在于不同的地方最主要还是前提的条件,出售前提条件为你必须有钱,而回收在于你必须有回收所需要用到的物品,这里的前提限制条件为:
7 E/ y$ G2 f) _/ T( Z# N0 OY% B1 g&quot;%player_hasitem-mat:&lt;物品的ID&gt;-amt:&lt;数量&gt;-data:&lt;子ID&gt;%&quot;.equals(&quot;yes&quot;);
9 \9 v* ]2 L3 i5 n) ]/ r; L! |& g

, _( y% @# d3 |9 e' T+ V% q$ Q' q效果图:h0 @3 `( V8 y, l; s
4 B+ X; Y9 f3 U$ b3 ^8 I+ p" Ej! R

- n1 H$ ^* d$ p: H% V8 e0 d% |$ Q0 X) `, W" c+ @# o( K7 ?
点击后:& Z% U9 H1 \% E& z8 b. T/ r% |
\- R* ~# x; E1 K1 Z8 p% T8 Y[
. J' {1 t% W( r
; A7 c' [3 z0 H& M* [# y

-3、实战2(出售和收购)) W) w2 V; A0 O% ~3 g" B2 }: X

例子:8 \! {* L: |- C! ^

代码:

  1. 单个出售或回收煤炭:
    * f0 D1 [& Q6 e6 ?$ w- L
  2.     material: 263% c5 a! p: b# m; A% f" ?
  3.     amount: 1( _* Y3 _% X) x. K7 d
  4.     slot: 7, `! d) D; b: Q4 D: ?/ ]
  5.     display_name: '&7[&b出售/回收&7]&a煤炭&f-&610&7元/个'
    " j1 V" O) N9 e. d, w( `# r
  6.     lore:# h% o* Q4 l' g1 C! B
  7.     - '&a左键&7购买此物品'
    + k8 H, O. C9 e) L' A
  8.     - '&a右键&7回收此物品'
    ; Y# I0 h/ ^/ v/ N: T" `1 i, J0 E
  9.     right_click_commands:
    / j% V* C% T6 ]2 Z/ w
  10.     - '[console] clear %player_name% 263 1' 8 m- ]2 W: ^' Q3 W
  11.     - '[console] eco give %player_name% 10'
    e8 Wp% I, }; d. e1 T
  12.     - '[message] &a恭喜你出售成功,获得了10游戏币' 5 \! H2 }% I; S- }i$ V
  13.     - '[close]'- mk/ F8 K4 h$ W5 [
  14.     right_click_requirement:: Y3 r* l: s1 u
  15.    expression: '"%player_hasitem-mat:263-amt:1-data:0%".equals("yes");'
    ' F# i' c3 N: F2 G. Q7 ^* b( c8 E
  16.    deny_commands:# Y: y1 t, v: j2 c- v
  17.    - '[close]'% \* ^/ ?/ J& o7 n# L
  18.    - '[message] &c物品不足'- b3 T: R+ B( E6 E, N+ N! q
  19.     left_click_commands:_; c% }4 X8 T) H! qa
  20.     - '[console] give %player_name% 263 1'
    6 zeyS]! E6 ?" g
  21.     - '[console] eco take %player_name% 10'
    7 _# h0 D: ^5 A
  22.     - '[message] &a恭喜你购买成功'2 VP" r( h3 y, Y+ Z
  23.     - '[close]'5 K; y, ?5 q" T* d5 V( U
  24.     left_click_requirement:9 ~" W0 k* w6 f2 L
  25.    expression: '%vault_eco_balance% >= 10'
    ' U. O7 `6 A# u9 q3 n
  26.    deny_commands:
    0 ?$ P- o. X3 G% v& EH
  27.    - '[close]'9 K9 _5 s0 x9 \U: ]% B: x0 S_
  28.    - '[message] &c金钱不足'
/ ^* N1 N( a: ^- K/ b8 X3 \8 T
  出售与回收合为一个项目,看起来是不是很高大上呢,其实在前面的例子中修改一下左键右键项目即可得到,这里注意一下lore要写清楚左键和右键输出什么,方便玩家选择。' m% P4 r8 v( [. M% @# \

, t* T# R9 p' y6 m) A0 y% M2 T效果展示:+ W( C" N/ D) l% C: z1 Q

! @3 H# R2 R2 f3 d$ y& B7 @; ?
. v5 ^' C$ p. lF0 f
x3 N/ bY, a( [左键点击与右键点击图:. o: y. g7 P- p' J, _. n

+ O6 r: |5 D: a" gI8 I' g0 R+ b; _" D. \

0 `7 Q: r) I% p. c* L

( a/ q+ l8 X9 V
- j6 L* N/ z6 S- o$ K
+ n! u( f* `/ x1 X
* |: I6 G0 g4 G+ p+ C3 w

" I; G( T- u) B/ K! |. e9 p
0 ~8 U`v8 v6 g( L7 a
三、每日礼包

-1、介绍$ B8 i# X0 a! H1 I8 ?

# _I% d1 K( J
   每日礼包可以促使玩家每天登录游戏来领取礼包,这里的礼包我们习惯用Essentials的kit功能,而DM菜单可以更好的制作每日礼包,不仅可以达到每天只能领取一次的效果,还可以在lore上提示玩家还有多少时间来领取下一个礼包!(这里需要运用papi变量)$ T+ vj0 Z3 d2 N* }

+ `( _+ j; J+ v: N' P$ L
# DIh& ^' Q( H, T! v; l! L
-2、实战例子. \' Z& p. ~. c1 ~! d7 ?7 k

=1 a, V4 }' ?4 Q

代码:

  1. 每日礼包:7 K1 y" Hx+ K& F" g) u
  2.     material: 54- I% Z; [2 ~0 i. j1 c% l6 \# f
  3.     slot: 10
    $ D3 Y4 C. ^# i5 Q( v
  4.     priority: 1
    8 f6 S! Q* y' Q$ k; p
  5.     update: true: A$ Z4 k6 [, e4 G
  6.     hide_attributes: true
    5 VD6 r' e" ?& X|" b2 K
  7.     view_requirement: '"%essentials_kit_is_available_daily%".equalsIgnoreCase("yes")'! `) U- M# J0 S5 X1 v6 x: }
  8.     display_name: '&a每日礼包&f[&b点击领取&f]'& m6 ]5 a/ k: t1 Y" C3 O
  9.     lore:Y+ [1 N' B: q7 I
  10.     - '&7点击可以领取哦~~'6 ?, m0 X4 jx' y( M, M2 F
  11.     - '&7这是一个礼包'
    7 ]1 x+ Z; B/ l8 L( M" o
  12.     left_click_commands:( o8 Q& l# {- U]
  13.     - '[player] kit daily'7 Q* ~( V) B" ]
  14.     - '[close]'
    1 |$ ?+ P7 d6 p* b! z0 B! ?$ g: C( x
  15.     right_click_commands:# H( o# Q4 r4 A. \: X0 Y
  16.     - '[player] kit daily'/ L2 H, WB+ ?/ F0 J- [1 m% y8 z& H9 @
  17.     - '[close]'P% @0 A& H, N7 h2 |% c
  18. 礼包未冷却结束:6 u! \$ du7 N$ I( |5 f' ^
  19.     material: 1661 P' ]: i% v, e* _1 D6 I8 u# W
  20.     slot: 10: n. k' \0 u2 \" _! M0 @& ^/ ]
  21.     priority: 2
    2 ~- `4 U' k, j4 U! ?
  22.     update: true
    # v3 B9 x- L& ~* t1 q/ dE5 ?
  23.     hide_enchantments: true
    3 r' a* f* o% X- h/ g8 L
  24.     enchantments:0 a# |; g& z8 r4 J
  25.     - 'DURABILITY;1'0 }, xy" B* x- {( N7 ~& a
  26.     display_name: '&a每日礼包&f[&c冷却中&f]'
    & T7 u4 F+ X6 z: l% S
  27.     lore:
    # s\! v1 l4 j' C
  28.     - '&c当前礼包正在冷却'
    0 E. `6 W6 u, Oj- e' I- ~5 s
  29.     - '&7请再等待 &c%essentials_kit_time_until_available_daily%'
    : P. |: l" y* T/ M
  30.     left_click_commands:2 N0 G& s# U+ U- P" n' h
  31.     - '[message] &c真坏,冷却了还点我~'
    5 f" jT1 m- O1 G% z
  32.     right_click_commands:) K+ P5 K6 R) R7 b" u; X' b
  33.     - '[message] &c真坏,冷却了还点我~'
1 N) D+ x" x4 L0 r7 A
效果图展示:7 W, i4 ^+ k' o2 g* [% G: [( y
4 a2 B( m7 W: A

1 B) I6 w+ M+ k1 w- v
9 A6 L" j6 \/ H8 R+ z7 V领取后:
: `' Y' ?# Z% C

7 {. I% i+ G/ o. A! j3 s$ D! c) Z+ R5 Y6 v. @Z: R
' C/ V5 \" T0 e. \1 n2 G
开始制作:
3 d, k0 X, J1 L. M" J/ c% f* |①第一步先设置你所要的礼包,这次例子我用的是Essentials的kit功能(不会的同学可以搜索一下别的教程)
% @" R% A0 |) O$ o/ d8 w
5 q! i" i" @/ `

代码:

  1. daily:
    3 t0 o0 I# u; Q5 v, U# T* Q
  2.     delay: 864006 X- q6 }) H7 i! N" n4 E
  3.     items:
    ( H8 f9 P* f5 W1 ]' r# E" @* k
  4.    - 388 64) K4 t3 _9 \; `0 M& p
  5.    - 274 1
    * s+ k* Ob/ M$ \1 _
  6.    - 275 1
$ c$ |F+ `& G* P7 x& V2 l
注意这里的delay为86400(单位:s[秒]),86400秒=1天6 _* u/ a7 h/ `g1 ]4 l
8 Y/ H5 `% u6 N% X

/ g, H! a7 z- x2 j- V* C- b3 M②下载变量Essentials0 ^9 G( K) k; b& f$ K& D

代码:

  1. /papi ecloud download Essentials

. L. n9 e% q0 r6 {1 b7 S③配置dm菜单的配置+ _! s6 l( {6 c5 i' m* V
这里我已经配置好了,这里用了浏览限制和优先级2个功能来配合(不会的看[1]初步认识DeluxeMenus)
7 q+ |6 a; S2 {( y! D" [! D2 u0 g" {4 c2 r+ L3 y) N

$ Q$ a, I; R2 H+ D: q* D4 f每日礼包中的浏览限制:$ m' @$ e7 ?3 r

代码:

  1.     view_requirement: '"%essentials_kit_is_available_daily%".equalsIgnoreCase("yes")'
) y2 c" O4 K7 X, _
当玩家可以领取daily的kit工具礼包时候,才显示优先级1(就是此项目)5 j% _+ v- S* E/ R5 P
' sj7 a# ]) ?6 T9 J: x
/ G7 S- }/ f$ S6 V6 ?! Q3 ?( c$ S
礼包未冷却结束中的lore变量:6 A: f$ v$ m; _6 W/ q

代码:

  1.     - '&7请再等待 &c%essentials_kit_time_until_available_daily%'
# c5 o& R0 W0 y5 K3 [6 n3 D
这个为礼包下次能够领取还剩多少时间的变量,这里可以显示在lore上,当优先级1不满足就显示优先级2就能够显示这个lore的变量来提示玩家还有多少时间才能领取此礼包~
5 M* Z5 G. Nm4 g; Q/ |. c$ G. Hh7 S
1 q, I' ^8 Q. Km2 q
④总的来说:6 u- k- `6 E/ @- _( c# @7 |
   先判断玩家是否能够领取,如果能领取就显示优先级1,如果不能就显示优先级2,而优先级2中的lore变量,可以让玩家清楚还有多少时间才能领取下一次的礼包,这样来达到每日礼包的目的。5 E4 u! ~h4 A: F- l. D* W

. s& j4 O! u7 o6 @
  需要注意的点,配置中,记得重启变量插件以及菜单插件和Essentials,这样才能确保变量能够正常使用
5 y0 ~7 c9 K0 K& |
4 l6 r! f' G6 J8 a7 f$ N* P% {. Y' y8 X( l4 R' b6 X+ R, x9 Q- A

5 x3 S" X; [: \
' ?: s$ L: L1 z, x3 W; s" e& u; C
5 A1 _. }; Y/ {8 j# p/ o' d
5 U* ?1 D" U9 w4 G. K) b. @4 I
, C1 [# y& |+ E

4 x7 L" l3 B) y/ {
统计

帖子字节:约4W
耗费时长:3个星期(中间读书以及测试例子和学习插件)
是否原创:参考原wiki后全部原创例子
图片数量:26(数错请联系)
其他优秀菜单教程帖子:BossShop老板商店
4 W1 e% j5 E' c) I
鸣谢谢谢你们能够看到这里鸣谢秋风残叶的wiki对我的大力帮助感谢PCD小组成员对我的指导和帮助/ S, n. S! f2 d1 E3 F2 w! G3 F
& z* m1 B1 m4 q5 X3 ~
帖子来之不易,是否评分一波呢?