Skip to content

Commit

Permalink
Decrement danger container's bottom blank area
Browse files Browse the repository at this point in the history
  • Loading branch information
William-Shi233 committed Aug 26, 2023
1 parent c198d15 commit 6cbaf77
Show file tree
Hide file tree
Showing 10 changed files with 22 additions and 18 deletions.
10 changes: 6 additions & 4 deletions .vitepress/theme/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@

.vp-doc ol {
/* 有序列表的序号应与正文对齐,而非让列表元素与正文对齐 */
margin-left: 10px;
margin-left: 12px;
}

.custom-block {
Expand All @@ -86,9 +86,9 @@
border-top-right-radius: 4px;
border-top-style: solid;
border-top-width: 0px;
/* 增大容器区域内上下两侧的空白 */
/* 增大容器区域内上方的空白 */
padding-top: 10px;
padding-bottom: 10px;
padding-bottom: 2px;
/* 重置容器区域内左侧的空白 */
padding-left: 0px;
/* 增大与其它文字间的距离 */
Expand Down Expand Up @@ -116,6 +116,8 @@
/* 容器段落间距增大 */
padding-top: 6px;
padding-bottom: 6px;
margin-top: 8px;
margin-bottom: 8px;
/*
容器段落向右侧缩进,确保标志图片在所有文字左侧。
由于列表项左侧有点,要让点与上方文字对齐,而不是正文与上方文字对齐。所以多缩进 16px。
Expand All @@ -125,7 +127,7 @@

.custom-block-title {
/* 都用黑色文字,增大字号 */
color: #4D4D4D;
color: #333333;
font-size: 16px;
/* 确保容器标志图片和标题在同一行 */
display: flex;
Expand Down
2 changes: 1 addition & 1 deletion docs/Volume1/EX-0-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ java -jar spigot-1.16.5.jar

是不是很简单?对了,下一次启动时就只需要启动 `cmd`,输入一次上面的命令就可以了,也不需要再次修改 `eula.txt` 了。

::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **到底怎么回事**
::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **到底怎么回事**
Minecraft 也是一种 Java 认识的东西,我们指示 Java 启动了 `spigot-1.16.5.jar`,那里面包含了 Minecraft 服务器需要的很多东西。
:::

Expand Down
2 changes: 1 addition & 1 deletion docs/Volume1/TR-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@

点击[这个链接](https://www.jetbrains.com.cn/idea/download/download-thanks.html?platform=windows)来下载安装包。这是 **IntelliJ IDEA**,一个强大的开发工具。

::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> 如果你还在使用 Windows 7,请下载[这个版本](https://download.jetbrains.com/idea/ideaIU-2020.1.4.exe)
::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **如果你还在使用 Windows 7,请下载 [这个版本](https://download.jetbrains.com/idea/ideaIU-2020.1.4.exe)**
:::

下载后同样运行安装程序,同意许可协议,安装即可。
Expand Down
4 changes: 2 additions & 2 deletions docs/Volume2/EX-1-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public class HarmonyAuth extends JavaPlugin {

我们先来完成事件监听器。事件处理器要实现 `org.bukkit.event.Listener`,如果你不记得了,请参考 2-2 的内容、

::: danger <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M10 14C10 15.1 9.1 16 8 16 6.9 16 6 15.1 6 14 6 12.9 6.9 12 8 12 9.1 12 10 12.9 10 14Z'/%3E%3Cpath d='M10 1.6C10 1.2 9.8 0.9 9.6 0.7 9.2 0.3 8.6 0 8 0 7.4 0 6.8 0.2 6.5 0.6 6.2 0.9 6 1.2 6 1.6 6 1.7 6 1.8 6 1.9L6.8 9.6C6.9 9.9 7 10.1 7.2 10.2 7.4 10.4 7.7 10.5 8 10.5 8.3 10.5 8.6 10.4 8.8 10.3 9 10.1 9.1 9.9 9.2 9.6L10 1.9C10 1.8 10 1.7 10 1.6Z'/%3E%3C/svg%3E" style="background-color:#DA0B50; clip-path: circle();" width="24px" height="24px"> **当心同名**
::: danger <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M10 14C10 15.1 9.1 16 8 16 6.9 16 6 15.1 6 14 6 12.9 6.9 12 8 12 9.1 12 10 12.9 10 14Z'/%3E%3Cpath d='M10 1.6C10 1.2 9.8 0.9 9.6 0.7 9.2 0.3 8.6 0 8 0 7.4 0 6.8 0.2 6.5 0.6 6.2 0.9 6 1.2 6 1.6 6 1.7 6 1.8 6 1.9L6.8 9.6C6.9 9.9 7 10.1 7.2 10.2 7.4 10.4 7.7 10.5 8 10.5 8.3 10.5 8.6 10.4 8.8 10.3 9 10.1 9.1 9.9 9.2 9.6L10 1.9C10 1.8 10 1.7 10 1.6Z'/%3E%3C/svg%3E" style="background-color:#DA0B50; clip-path: circle();" width="24px" height="24px"> **当心同名**
许多接口都被称为 `Listener`,请确保你实现的是 `org.bukkit.event.Listener`!你可以通过 IDEA 快速补全右侧显示的包名来判断,按上下键选择。
:::

Expand Down Expand Up @@ -282,7 +282,7 @@ public final class LoginData {

*这里的 `private` 使得 `RESTRICTS` 只能通过下面的三个 `public` 方法进行操作,`RESTRICTS` 不能被外部直接访问,受到保护。*

::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **Mojang 的 Bug**
::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **Mojang 的 Bug**
按照 Minecraft 规定,玩家名字是区分大小写的,那为什么这里的代码要把玩家的名字转换为小写(`convertedName`)呢?

这实际上是一个服务端的 Bug,如果有一个玩家叫 `RarityEG`,并且服主授予该玩家 OP 权限,那这个玩家名的**任意大小写**,例如 `rARityEg` 或者 `RARITyeG` 都是有 OP 权限的。
Expand Down
2 changes: 1 addition & 1 deletion docs/Volume3/3-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ ItemMeta im = item.getItemMeta();

Bukkit 这里有个很缺德的地方。

::: danger <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M10 14C10 15.1 9.1 16 8 16 6.9 16 6 15.1 6 14 6 12.9 6.9 12 8 12 9.1 12 10 12.9 10 14Z'/%3E%3Cpath d='M10 1.6C10 1.2 9.8 0.9 9.6 0.7 9.2 0.3 8.6 0 8 0 7.4 0 6.8 0.2 6.5 0.6 6.2 0.9 6 1.2 6 1.6 6 1.7 6 1.8 6 1.9L6.8 9.6C6.9 9.9 7 10.1 7.2 10.2 7.4 10.4 7.7 10.5 8 10.5 8.3 10.5 8.6 10.4 8.8 10.3 9 10.1 9.1 9.9 9.2 9.6L10 1.9C10 1.8 10 1.7 10 1.6Z'/%3E%3C/svg%3E" style="background-color:#DA0B50; clip-path: circle();" width="24px" height="24px"> **当心**
::: danger <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M10 14C10 15.1 9.1 16 8 16 6.9 16 6 15.1 6 14 6 12.9 6.9 12 8 12 9.1 12 10 12.9 10 14Z'/%3E%3Cpath d='M10 1.6C10 1.2 9.8 0.9 9.6 0.7 9.2 0.3 8.6 0 8 0 7.4 0 6.8 0.2 6.5 0.6 6.2 0.9 6 1.2 6 1.6 6 1.7 6 1.8 6 1.9L6.8 9.6C6.9 9.9 7 10.1 7.2 10.2 7.4 10.4 7.7 10.5 8 10.5 8.3 10.5 8.6 10.4 8.8 10.3 9 10.1 9.1 9.9 9.2 9.6L10 1.9C10 1.8 10 1.7 10 1.6Z'/%3E%3C/svg%3E" style="background-color:#DA0B50; clip-path: circle();" width="24px" height="24px"> **当心**
Bukkit 在获取 `ItemMeta` 时,返回的是**一个副本**,我们对它进行修改后,还需要使用 `item.setItemMeta` 返回给物品堆。这就像读写文件一样:内存中的内容如果不保存,就不会写入磁盘。

很快你就会发现,这种做法实在太不方便了,但我们也没办法,这是规定。
Expand Down
2 changes: 1 addition & 1 deletion docs/Volume3/EX-2-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ if (inv.getTitle().equals(Menu.TITLE)) {

如果格子的位置不合法,就不进行进一步处理,直接 `return`

::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **为什么不用 `else`**
::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **为什么不用 `else`**
这里的 `return``else` 好用,我们的思路是:这种情况不符合,处理结束;那种情况不符合,处理结束……直到全都符合,才进行处理。使用 `return` 可以避免嵌套 `if` 的繁琐。
:::

Expand Down
2 changes: 1 addition & 1 deletion docs/Volume4/4-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ method.invoke(im, itemMeta);

下一步我们需要获得 NBT,那么我们需要得到 `ItemStack``NBTTagCompound` 两个类。`ItemStack` 类用来调用 `getTag` 方法,而 `NBTTagCompound` 用于在没有 NBT 时创建新对象。

::: danger <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M10 14C10 15.1 9.1 16 8 16 6.9 16 6 15.1 6 14 6 12.9 6.9 12 8 12 9.1 12 10 12.9 10 14Z'/%3E%3Cpath d='M10 1.6C10 1.2 9.8 0.9 9.6 0.7 9.2 0.3 8.6 0 8 0 7.4 0 6.8 0.2 6.5 0.6 6.2 0.9 6 1.2 6 1.6 6 1.7 6 1.8 6 1.9L6.8 9.6C6.9 9.9 7 10.1 7.2 10.2 7.4 10.4 7.7 10.5 8 10.5 8.3 10.5 8.6 10.4 8.8 10.3 9 10.1 9.1 9.9 9.2 9.6L10 1.9C10 1.8 10 1.7 10 1.6Z'/%3E%3C/svg%3E" style="background-color:#DA0B50; clip-path: circle();" width="24px" height="24px"> **当心同名**
::: danger <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M10 14C10 15.1 9.1 16 8 16 6.9 16 6 15.1 6 14 6 12.9 6.9 12 8 12 9.1 12 10 12.9 10 14Z'/%3E%3Cpath d='M10 1.6C10 1.2 9.8 0.9 9.6 0.7 9.2 0.3 8.6 0 8 0 7.4 0 6.8 0.2 6.5 0.6 6.2 0.9 6 1.2 6 1.6 6 1.7 6 1.8 6 1.9L6.8 9.6C6.9 9.9 7 10.1 7.2 10.2 7.4 10.4 7.7 10.5 8 10.5 8.3 10.5 8.6 10.4 8.8 10.3 9 10.1 9.1 9.9 9.2 9.6L10 1.9C10 1.8 10 1.7 10 1.6Z'/%3E%3C/svg%3E" style="background-color:#DA0B50; clip-path: circle();" width="24px" height="24px"> **当心同名**
这里的 `ItemStack``net.minecraft.server.v?_??_R?` 包下的 `ItemStack`,不是 API 中的 `org.bukkit.inventory.ItemStack`
:::

Expand Down
12 changes: 7 additions & 5 deletions docs/Volume4/AC-1-4.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public void onPlayerJoin(PlayerJoinEvent e) {
restoreLocation(e.getPlayer());
```

::: danger 这些代码有问题,待会我们要调试它。
::: danger <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M10 14C10 15.1 9.1 16 8 16 6.9 16 6 15.1 6 14 6 12.9 6.9 12 8 12 9.1 12 10 12.9 10 14Z'/%3E%3Cpath d='M10 1.6C10 1.2 9.8 0.9 9.6 0.7 9.2 0.3 8.6 0 8 0 7.4 0 6.8 0.2 6.5 0.6 6.2 0.9 6 1.2 6 1.6 6 1.7 6 1.8 6 1.9L6.8 9.6C6.9 9.9 7 10.1 7.2 10.2 7.4 10.4 7.7 10.5 8 10.5 8.3 10.5 8.6 10.4 8.8 10.3 9 10.1 9.1 9.9 9.2 9.6L10 1.9C10 1.8 10 1.7 10 1.6Z'/%3E%3C/svg%3E" style="background-color:#DA0B50; clip-path: circle();" width="24px" height="24px"> **这些代码有问题,待会我们要调试它**
:::


Expand Down Expand Up @@ -135,7 +135,9 @@ java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8342 -jar pap

注意我们一般选择mojmap映射的服务端作为调试时的服务端,因为它可读性更好。

::: info 该指南适用于高版本(1.17+)服务端。
::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **注意兼容性**
本节中的部分内容可能不与旧版本(1.16.5 及以下)兼容,请使用 1.17 或更高版本!

1.16.5以及更低版本,NMS的Jar包可能出现在`caches`文件夹,也可能是运行的Jar文件自身。
:::

Expand All @@ -147,7 +149,7 @@ java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8342 -jar pap

`org.spigot.WatchdogThread::run`方法中,在while循环内第一行打个断点,然后执行到此处时,在下面调试窗口的左半边的栈帧中,右键,菜单中选择「Force Return」,然后点左边的继续(绿色三角加一竖线)。

::: info 设置断点的方法
::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **设置断点的方法**
在代码行号的左侧点击,会出现一个红色的圆点,这就是断点。执行到断点处时,程序会暂停执行,等待你的调试操作。
:::

Expand Down Expand Up @@ -241,7 +243,7 @@ RuntimeDataManager.addRestrictUUID(player.getUniqueId());

不需要,改完直接选择IDEA顶上菜单「Run」->「Debugging Actions」->「Reload Changed Classes」重新加载变化的类即可。

::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **何时Reload Changed Classes有效**
::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **何时Reload Changed Classes有效**
同时满足以下几个条件:
- 不新增/删除方法字段,或者修改其类型
- 不新增类
Expand Down Expand Up @@ -384,7 +386,7 @@ IDEA还有许多方便的调试功能,读者可以自行探索。

<div id='solution1' style='display:none;'>

::: info **谜底**
::: info <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' transform='scale(0.6)' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E" style="background-color:#0B87DA; clip-path: circle();" width="24px" height="24px"> **谜底**
HarmonyAuth SMART使用`String::startsWith`判断命令是否在白名单内,而为了使玩家登录白名单中有登录命令`/l`。这在真实的服务器中会允许`/luckperms`等敏感命令的使用。
:::
</div>
Expand Down
Loading

0 comments on commit 6cbaf77

Please sign in to comment.