世界編輯器

**WorldEdit**（**世界編輯器**，簡稱**WE**，俗稱**神奇小木斧**、**木斧**等），使用主要目的為大範圍方塊編輯，是大型伺服器中常用插件之一。

概論
--

若玩家欲在遊戲內進行大規模建設，如填海造陸、地質改良、興建大型屋邨等等，採用手動放置一磚一瓦的人工建造方法不但極度耗費玩家體力與心力、浪費大量時間在重複性高的基本工作，不符成本效益，更不利於大規模之城市發展，因此**WorldEdit**的運用顯得相當重要。

根據水搞伺服器身份級別權限表，第二級玩家方可使用此插件。

雖本插件便利性甚高，但其運作相當依賴伺服器CPU存取能力，因此使用不當容易導致伺服器凍結或崩潰（俗稱死ser），故本插件應在考量伺服器效能之下謹慎使用。

## 使用方法

首先，世界編輯器重要的是一支木斧(通稱小木斧工具)。預設情況下先用左鍵點取一點（稱為pos #1，第一點），右鍵再點取一點（稱為pos #2，第二點）。兩點點選後會產生兩點的座標，以及選區。（即影響範圍，水搞伺服器正常情況下可承受1,000,000格以下的方塊變動）指令方面，多數以//為開頭，後接指令與一些參數。以下會詳細介紹使用方法。

## 指令列表

### 基本指令：系統

```
//we help
//worldedit help

```

此指令可以查看所有WE指令。

```
//we version
//worldedit version

```

此指令可以查看WE版本。

### 基本指令：更改歷史紀錄

#### undo、redo

```
//undo

```

undo是最簡單的語法之一，主要目的上還原上一步動作，也就是復原。

```
//redo

```

redo是最簡單的語法之一，主要目的還原undo所取消的動作，也就是重新執行。

#### clearhistory

```
/clearhistory

```

clearhistory顧名思義是會清除操作簿中的所有更動紀錄，要注意執行此指令時用的是**/**而不是**//**。

### 基本指令：基本選取

#### wand

```
//wand

```

wand指令執行後，系統將給玩家一隻木斧。此被稱之為**最偷懶的指令**，實際用途非常方便，但鮮少人知道。

#### toggleeditwand

```
/toggleeditwand

```

toggleeditwand指令可以讓原本被世界編輯器占用的木斧、木槁回復到原本的用途。回到原本WE的模式只需再打一次即可。

#### limit

```
//limit 方塊數量

```

limit指令可以限制更改的方塊數量，要回復無限制只要參數打-1即可。

#### size

```
選取範圍-->
//size

```

size指令可以查看選取範圍的大小。

#### count

```
選取範圍-->
//count 方塊ID

```

count指令可以查看選取範圍內有多少相同方塊存在。

#### distr

```
選取範圍-->
//distr

```

distr指令可以查看選取範圍內方塊的描述。

#### pos1、pos2

```
//pos1 座標
//pos2 座標

```

pos指令可以用來替代左右鍵，它會以你腳下的方塊作為選擇點。

#### hpos1、hpos2

```
//hpos1
//hpos2

```

hpos指令和pos一樣可以替代左右鍵，但是會以你看的方塊作為選擇點。

### 基本指令：基本編輯

#### set

```
選擇範圍-->
//set   方塊ID**或**方塊代碼

```

set指令是WE中最基本的指令，它會取代選取範圍內所有方塊成統一，關於方塊ID及方塊代碼請查詢[1]。

#### replace

```
選擇範圍-->
//replace   被取代方塊ID**或**方塊代碼   取代方塊ID**或**方塊代碼

```

replace指令主要彌補set的不足，它只取代部分方塊，並可以同時取代多個方塊。

#### replacenear

```
//replacenear   半徑   被取代方塊ID**或**方塊代碼   取代方塊ID**或**方塊代碼

```

replacenear比replace更高級，他會取代以玩家為中心往外擴的正方形所包含的所有方塊，如設半徑為5的話，影響範圍(5+1+5)^2的方塊都會被影響。

#### stack

```
選擇範圍-->
//stack 次數 方向

```

stack指令被認為是最好用的指令，它主要可以重複貼上某特定範圍內的物體，以節省建造者的時間。

#### move

```
選擇範圍-->
//move 格數 方向 不移動方塊ID

```

move指令可以移動整個選取範圍至一指定格數，不過不移動方塊ID部分有Bug暫時無法使用。

#### walls

```
選取範圍-->
//walls 方塊ID**或**方塊代碼

```

walls指令可以節省二度set所花的時間，但是它不能調整厚度，一次walls只能改變選取範圍內最邊緣的方塊。

#### overlay

```
選取範圍-->
//overlay 方塊ID或代碼

```

overlay指令可以將選取範圍內的底層設置成一樣的方塊。

#### outline

```
選取範圍-->
//outline 方塊ID或代碼

```

outline指令可以將選取範圍最邊緣的方塊設置成一樣的方塊，包含牆壁、地板以及天花板。

#### center

```
選取範圍-->
//center 方塊ID或代碼

```

center指令可以將選取範圍內最中央的方塊設置成一樣的方塊，最少1格、最多8格。

#### hollow

```
選取範圍-->
//hollow 厚度 方塊ID

```

hollow指令可以把選取範圍內的方塊改成統一方塊。

#### chunk

```
//chunk

```

chunk指令可以選取所在的區塊。

#### line

```
選取範圍-->
//line 方塊ID**或**方塊代碼 厚度

```

line指令善於用來處理連接斜角或是不規則範圍內方塊的連接，厚度參數若等於0則會表示沒有「向外擴張」任何半徑，但是還是有改變影響。

#### curve

```
選取範圍-->
//sel convex
//curve 方塊ID 厚度

```

curve指令不可在預設狀況下使用，需先將選區模式設為「convex」方可利用。更改為「convex」選區，並選擇第一點與多個第二點之後，輸入//curve指令即可在此點間依順序生成一多項式插值曲線。

### 基本指令：剪貼簿

#### copy

```
選取範圍-->
//copy

```

copy指令會根據選取的範圍、所站位置而更動，因此使用copy指令時必須熟記所站的位置，找到另一邊與所站位置相對應的點後再用paste，或是可以考慮用stack代替。

#### cut

```
選取範圍-->
//cut 不移動方塊ID

```

cut指令等同於copy指令加上set 0，即等於剪下，用法與copy相同，唯獨一般人用處不大。不移動方塊ID部分有Bug暫時無法使用。

#### paste

```
剪貼簿範圍存在-->
//paste

```

paste指令會根據cut、copy指令所站的點來貼上你的選取範圍，亦可以透過rotate、flip等指令改變所面對的方向。

* 後綴
	+ -a
	+ -s

#### rotate

```
剪貼簿範圍存在-->
//rotate 度數

```

rotate指令可以旋轉剪貼簿內的範圍，目前可用度數參數有45、90、135、180、225、270、315、360這幾種選項，利用rotate和paste合用時須注意所站位置。

#### flip

```
剪貼簿範圍存在-->
//flip 方向

```

flip指令是翻轉指令中較難理解的指令，它以剪貼簿範圍中的剪貼點為中心，有垂直翻轉與水平翻轉兩選項，但需輸入方位參數，因此最好用此指令的方法是安裝小地圖插件，接著利用習慣或測試來抓準flip的改動方向。

#### clearclipboard

```
剪貼簿內容存在-->
/clearclipboard

```

此指令可以清除剪貼簿。

### 基本指令：更改選取範圍

#### expand

```
選取範圍-->
//expand 擴充數量 逆方向擴充數量 方向

```

expand指令屬於比較高階的指令，它可以改動選取範圍，數量與逆方向數量參數代表從原本選取範圍外面數幾格擴充。此指令對於需改動選取範圍的人來說比較好用。

```
選取範圍-->
//expand vert

```

expand vert指令可以把選取範圍擴大到y=1~255全部。

#### contract

```
選取範圍-->
//contract 縮減數量 逆方向縮減數量 方向

```

與//expand功能相反，可朝自身朝向或指定方向縮減指定數量的格數。此指令對於需改動選取範圍的人來說比較好用。

#### outset

```
選擇範圍-->
//outset 數量

```

outset語法會從選擇範圍開始往外拓增，每邊都增加一樣的格數。

#### inset

```
選擇範圍-->
//inset 數量

```

inset語法outset相反，從選擇範圍開始往內縮減，每邊減少一樣的格數。

#### shift

```
選擇範圍-->
//shift 數量 方向

```

shift語法可以移動選擇區域，但並不影響選擇區域內的方塊。

### 進階指令：創造立體圖形

#### cyl

```
//cyl 方塊ID 半徑 高度

```

cyl指令可以創造實心圓柱，當然也可以用sel cyl來執行。

#### hcyl

```
//hcyl 方塊ID 半徑 高度

```

hcyl指令可以創造空心圓柱。

#### sphere

```
//sphere 方塊ID 半徑

```

sphere指令可以創造實心球體。

#### hsphere

```
//hsphere 方塊ID 半徑

```

hsphere指令可以創造實心球體。

#### pyramid

```
//pyramid 方塊ID 高度

```

pyramid指令可以創造實心金字塔。

#### hpyramid

```
//hpyramid 方塊ID 高度

```

hpyramid指令可以創造空心金字塔，沒有底部。

### 進階指令：地形調整

#### smooth

```
選取範圍-->
//smooth

```

smooth語法可以磨平所選取的區域。

#### deform

```
選取範圍-->
//deform 表達式

```

deform語法可以扭曲選取範圍內的地形。

#### naturalize

```
選取範圍-->
//naturalize

```

naturalize語法可以將選取範圍內的上層設為3層泥土、以下為石頭，使其更天然化。

#### regen

```
選取範圍-->
//regen

```

regen語法可以重新生成原本選取範圍內的地圖，以達到地圖還原的效果。

### 進階指令：選區模式

```
//sel
//desel

```

清除選取範圍。

```
//sel cuboid

```

選取方形範圍，是預設的選取模式。

* 第一點：立方體端點
* 第二點：立方體對角端點

```
//sel extend

```

選取方型範圍，這種模式下可以選多個第二點，選區會取其最大範圍。

* 第一點：立方體端點
* 第二點+：立方體端點

```
//sel poly

```

水平多邊形柱體選取，屬於較少使用的模式，惟可用於不規則多邊形選區的編輯。

* 第一點：平面圖形端點
* 第二點：平面圖形其中一頂角端點
* 第三點+：平面圖形其中一頂角端點，滿足此點為完成sel poly最小需求。

```
//sel ellipsoid

```

選取橢圓範圍。

* 第一點：圓心
* 第二點：半長軸
* 第三點：半短軸

```
//sel sphere

```

選取圓形範圍，可用來做圓球或旋轉物體，亦可用作測量兩點間距離。

* 第一點：球心
* 第二點：半徑

```
//sel cyl

```

選取圓柱範圍，可作圓柱或水平旋轉物體。

* 第一點：底面圓心
* 第二點：半長軸
* 第三點：半短軸
* 第四點：高

```
//sel convex

```

生成曲線（//curve）所需的選取模式。

* 第一點：起點
* 第二點+：曲線通過之點

### 進階指令：生成

#### generate

```
//g 方塊ID或名稱 後綴 表達式(不等式圖形)
//generate 方塊ID或名稱 後綴 表達式(不等式圖形)

```

* 參見：世界編輯器/generate

#### forest

```
選取範圍-->
//forest 樹木種類 密度

```

forest指令可以讓選取範圍內產生樹木(必須是泥土或草地)。

#### forestgen

```
/forestgen 大小 樹木種類 密度
//forestgen 大小 樹木種類 密度

```

forestgen指令可以從自身為中心生成樹木。

#### flora

```
選取範圍-->
//flora 密度

```

flora指令可以讓選取範圍內產生花草。

#### pumpkins

```
/pumpkins 大小 密度
//pumpkins 大小 密度

```

pumpkins指令可以從自身為中心生成南瓜森林。

### 進階指令：效用指令

#### fill

```
//fill 方塊ID 半徑 深度

```

fill指令可以將附近區域的凹洞填滿。

#### fillr

```
//fillr 方塊ID 半徑 深度

```

fillr指令可以將附近區域的凹洞遞歸地填滿。

#### drain

```
//drain 半徑

```

drain指令可以將附近區域內的液體移除。

#### fixwater

```
//fixwater 半徑

```

fixwater可以將區域內流動的水替換成靜止的水，配合//replace填充不規則形區塊相當好用。

#### fixlava

```
//fixlava 半徑

```

fixlava可以將區域內流動的岩漿替換成靜止的岩漿。

#### removeabove

```
//removeabove 半徑

```

removeabove可以將玩家上方的方塊全數移除。

#### removebelow

```
//removebelow 半徑

```

removebelow可以將玩家下方的方塊全數移除。

#### green

```
//green 半徑

```

green可以將附近區域的泥土替換成草地。

#### ex

```
/ex 半徑

```

ex指令可以將附近的火勢撲滅。

#### snow

```
/snow 半徑

```

snow指令可以將附近的地面覆蓋雪。

#### thaw

```
/thaw 半徑

```

thaw指令可以將附近的雪融化。

#### butcher

```
/butcher 半徑

```

butcher指令可以將附近的敵對生物殺死。

### 進階指令：超級木鎬

WE插件中除了木斧，還有木槁工具可以使用，使用時必須裝備木槁，以下介紹使用超級木槁時用到的指令。

#### //

```
//

```

//這個指令可以啟用或停用超級木槁，記住使用超級木槁時一定要謹慎小心，雖然可以用undo指令還原，但是影響甚大。

#### sp single

```
//sp single
//superpickaxe single

```

以上兩種指令都是超級木槁的single指令，主要目的是切為gamemode 0(生存模式)下的木槁狀態，這時使用木槁破壞物體時只會破壞1格方塊，並掉落同樣數量的方塊物品。

#### sp area

```
//sp area 半徑
//superpickaxe area 半徑

```

area指令可以用來修改超級木槁所影響的半徑，但最大上限是5格，也就是一個超級木槁破壞範圍只有11^3。

#### sp recur

```
//sp recur 半徑
//superpickaxe recur 半徑

```

recur指令可以將木槁模式切成一般的模式，也可以同時調整area指令所包含的半徑。

### 進階指令：移動語法

#### up

```
/up 格數(必須是不小於0的整數)

```

up是移動專用的指令，可以垂直上升參數數量的格數，並在所站位置下方生成一透明玻璃塊。

#### thru

```
/thru

```

thru是移動專用的指令，也是極其方便的穿牆指令。

後綴
--

在使用指令時，可以在指令後面加上後綴詞，只是詞的使用有限制。以下列出所有的後綴詞。

* -a：去除空氣方塊
* -o：在原本的位置
* -s：移動選區至剛剛做過動作的方塊（即shift）

## 衍伸及輔助插件模組

* **Fast Async WorldEdit**：為WE衍伸伺服端插件，可提供更高效率的編輯操作。
* **WorldEditCUI**：選區顯示客戶端模組，會將選區以框線方式顯示。
* **SelectionVisualiser**：選區顯示伺服端插件，會將選區以紅石粉末方式顯示。
* **Macro / Keybind Mod**：一種可建立遊戲內快捷鍵指令組合的客戶端模組，可令繁雜的WE指令操作更加簡化方便。

附註
--

Template:插件