跳到主要内容

minecraft配置服务器

screen是一个可以在多个线程之间多路复用一个物理终端的全屏窗口管理器。screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的SSH连接窗口那样。

这个screen感觉就是用来模拟Windows的窗口的一个工具

首先要了解几个概念:

  • 进程组 process group:一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
  • 会话期 session:一个或多个进程组的集合,有唯一一个会话期首进程(session leaer)。会话期ID为首进程的ID。
  • 会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程成为前台进程组,其余成为后台进程组。

screen命令

窗口操作

先输入screen Ctrl-a c 新建窗口(先按ctrl+a松手再按c) ctrl-a shift-" 查看打开的全部窗口(然后通过上下键可以切换窗口) exit 退出窗口之后会到另一个窗口,直到全部退出(或者用ctrl-a k) ctrl-a \ 关闭全部窗口 ctrl-a n 切换下一个窗口 ctrl-a p 切换上一个窗口 ctrl-a ctrl-a 切换最近使用的窗口 这些窗口操作都是在一个会话里执行的

会话操作

按ctrl+d,结束当前screen会话。 ctrl-a b 断开与screen会话的连接(也是一个会话) exit 在会话里使用是关闭这个会话(所以先使用 screen -r连接到会话,再使用exit关闭该会话) 或者使用 kill 会话id 就可以关闭会话了 screen -x sessionName # 重新进入之前已经创建的会话 screen -S yourname -> 新建一个名叫 yourname 的session,并马上进入 screen -ls -> 列出当前所有的session screen -r yourname -> 恢复离线的screen作业(yourname),重新连接会话是指回到那个环境,比如路径之类的 screen -d yourname -> 离线某个session 如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。

退出终端,进程继续运行

如果要退出ssh,不能直接退出,而是: 按ctrl+a,然后再按d后退出screen,这个时候只是退出当前screen界面,并没有结束。 ctrl + A 和 D 把这个线程挂载到后台 如果是直接退则是ctrl+z

所以说我们必须在服务器上安装 screen 。我们将用它来启动minecraft服务器。它将保持连接,即使在终端关闭后也能运行。

  • sudo apt-get install screen
  • 检查端口是否打开 39.106.44.242 25565
  • cd /usr/Minecraft 进到所在文件夹
  • 创建委托服务:screen -S "Minecraft"
  • 启动mc服务器进程: java -Xmx1024M -Xms1024M -jar minecraft_server.1.15.2.jar nogui
  • 然后stop关闭服务器 (尽量别用ctrl+c中断服务器)
  • eula.txt里改为eula=true
  • 启动mc服务器进程: java -Xmx1024M -Xms1024M -jar minecraft_server.1.15.2.jar nogui
  • 要在不停止游戏服务器的情况下断开SSH,请按CTRL + a然后按d。要恢复正在运行的屏幕会话,请使用命令screen -r

管理Linux的进程(注意!进程不是服务)

exit 退出ssh

- PID:进程号,每个进程独一无二的标识符(关闭进程需要使用)
- TTY:终端所属,表明进程产生于哪一个终端,对于多用户使用的Linux服务器有区分用户的功能
- TIME:进程运行了多久
- CMD:进程源于哪个程序

- ps -ef:列出所有用户所有终端的所有进程
- ps -efH:按乔木状列出所有进程,有的进程是某些进程的子进程
- ps -u 用户名:列出特定用户运行的进程
- top :显示当前内存占用情况
VIRT:进程占用的虚拟内存
  RES:进程占用的物理内存

查看服务进程:ps aux
查看服务cpu利用:top
查看服务对应端口:netstat -nlp
关闭对应pid进程:kill -9 pid

端口

telnet 39.98.239.82 8081

sudo ufw status
# 如果是
Status: inactive
# 则需要先启用防火墙
sudo ufw enable
# 禁用
sudo ufw disable
# 打开那个ssh端口
sudo ufw allow 22


- sudo ufw allow 25565 :开启端口
- sudo ufw status :查看全部打开的端口
- sudo ufw delete allow 25565 :关闭端口
- sudo ufw allow from 192.168.1.1 :允许某个ip访问全部端口
- lsof -i 查看使用端口的全部进程
- lsof -i:端口号 查看使用的端口进程
PID:进程id
USER:进程所有者
FD:文件描述符
TYPE:协议类型
DEVICE:端口号
SIZE/OFF:偏移
NODE:协议名
NAME:节点名


kill:结束进程
- kill PID:温柔地关闭进程号为PID的进程
- kill PID1 PID2 PID3:温柔地关闭进程号为PID1、PID2、PID3的进程
- kill -9 PID:强行粗暴地关闭进程号为PID的进程
- killall 程序名:关闭多个指定程序名的进程
- killall lighttpd:关闭所有的lighttpd程序

在内存不够的情况可以使用虚拟内存(swap)
查看虚拟内存大小:free -m

JAVA Server内可使用的常用命令 (当用户具有OP权限后这些指令也可以在OP的客户端上直接执行)

op 用户名 (此命令为为设定某为用户为op) deop 撤回op 命令退格时按ctrl+backspace gamemode adventure @设定范围或指定某位玩家(可以直接修改某个范围或者某个玩家的游戏模式为创造模式,其他模式同理) time set day (设置为晴天) weather clearn/rain/thunder(设置为晴天、雨天和雷雨天) kill @范围或者某个人名可以清除玩家(使玩家死亡重生)

使用forge服务器

这个是可以加载mod的服务器
  • 下载(linux运行)
    wget http://files.minecraftforge.net/maven/net/minecraftforge/forge/1.15.2-31.1.0/forge-1.15.2-31.1.0-installer.jar
  • 安装(注意不要直接在官网下载,因为官网下载的是Windows版)
  • java -jar forge-1.15.2-31.1.0-installer.jar nogui –installServer
  • 启动
    不要用这个启动
    java -jar forge-1.15.2-31.1.0-universal.jar nogui
    使用 java -jar forge-1.15.2-31.1.0.jar nogui启动

使用spigot服务器

Spigot无法加载mod,只能运行原版服务器

到这里下载 https://getbukkit.org/ 对应版本的 spigot-1.15.2.jar

java -Xmx2G -Xms128M -jar spigot-1.15.2.jar -Xmx:最大内存 -Xms:最小内存

砍树插件

/ choptee:用于所有设置等的主插件命令(别名/ ct)
/ togglechop:打开和关闭ChopTree(别名/ tc)

screen -S "Minecraft" cd /usr/Minecraft_spigot 使用 java -Xmx2G -Xms128M -jar spigot-1.15.2.jar启动游戏,而不是使用java -Xmx1024M -Xms1024M -jar minecraft_server.1.15.2.jar nogui 服务器stop 后 ctrl+c关闭服务器

复制文件命令 cp -ri /usr/Minecraft_spigot/world/* /usr/mc_saves/

指令

# 例
minecraft:barrier :空气墙
minecraft:structure_block:结构方块
/kill @e[type=Item] :清除地面的物品

可视化生成

村民指令

1G0340cI6.jpg

指令例如:/summon minecraft:villager ~ ~1 ~ {villagerData:{},} ~ ~1 ~ 表示 x,y,z坐标 (~1 表示自身方向上一格)

/summon minecraft:villager ~ ~1 ~ :创建一个村民
/summon minecraft:villager ~ ~1 ~ {Invulnerable:1}
  • 村民的职业,等级,外观: VillagerData:{}
    • 职业:profession 例如农夫:profession:farmer
    • 等级:level
    • 种类:type
  • 村民的自定义交易内容: Offers:{}
  • 其他的设定tag
    • NoAI:1 :不动
    • Invulnerable:1 :无敌(只有kill指令或者创造模式的玩家才可以杀死)
    • Silent:1 静音
    • PersistenceRequired:true :村民不会给系统删掉
    • CustomName :自定义名字 -->
      • CustomName:'"自定义名字"'
      • 或者 CustomName:'{"text":"自定义名字"}'
    • CustomNameVisible:1 :显示名字

VillagerData

等级

  • level:1 :新手
  • level:2 :学徒
  • level:3 :老手
  • level:4 :专家
  • level:5 :大师

种类

  • 沙漠 type:desert
  • 丛林 type:jungle
  • 平原 type:plains
  • 热带草原 type:savanna
  • 积雪 type:snow
  • 沼泽 type:swamp
  • 针叶林 type:taiga

职业

  • 石匠 profession:mason
  • 失业 profession:none
  • 牧羊人 profession:shepherd
  • 工具匠 profession:toolsmith
  • 武器匠 profession:weaponsmith
  • 皮匠 profession:leatherworker
  • 傻子 profession:nitwit
  • 制箭师 profession:fletcher
  • 渔夫 profession:fisherman
  • 农民 profession:farmer
  • 牧师 profession:cleric
  • 制图师 profession:cartographer
  • 屠夫 profession:butcher
  • 盔甲匠 profession:armorer

Offers

  • Recipes:[{交易项目},{交易项目},{交易项目},{交易项目}] 注意用的是 [] :在这里面包含所有的交易项目
  • 交易项目
    • buy:{id:物品名称,Count:1}
    • buyB:第二个物品
    • sell:{id:物品名称,Count:1}
    • maxUses:999999
    • rewardExp:true 是否在交易后会获得经验
    • xp:7 村民会获得的经验
  • 物品结构
    • id : 物品id
    • Count:数量
    • tag:物品的NBT Tag(武器的损坏度,附魔,药水内容,道具名称...等)
  • 例子

物品id

# 常用
iron_pickaxe:铁镐
stone_pickaxe:石镐
diamond_pickaxe:钻石镐
emerald: 绿宝石
cobblestone: 圆石
oak_log:橡木
birch_log
dark_oak_log
jungle_log
spruce_log
stripped_acacia_log
acacia_log
Offers{Recipes:{{buy:{id:EMERALD,Count:10},sell:{id:IRON_PICKAXE,Count:1}},maxUses:999999}

创建商人模板

矿工1
/summon minecraft:villager ~ ~1 ~ {VillagerData:{profession:toolsmith,level:5,type:jungle},Offers:{Recipes:[
{buy:{id:emerald,Count:10} ,sell:{id:iron_pickaxe,Count:1},maxUses:999999 },
{buy:{id:emerald,Count:30} ,sell:{id:diamond_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:oak_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:birch_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:dark_oak_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:jungle_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:spruce_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:stripped_acacia_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:acacia_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 }
]},NoAI:1,Invulnerable:1,CustomName:'"老矿工"'}
矿工2
/summon minecraft:villager ~ ~1 ~ {CustomName:"[{\"text\":\"老矿工\",\"color\":\"gold\",\"bold\":true,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"obfuscated\":false}]",Glowing:1b,Invulnerable:1b,PersistenceRequired:1b,DeathLootTable:"entities/empty",Attributes:[{Name:"generic.followRange",Base:1}],VillagerData:{type:"minecraft:savanna",profession:"minecraft:toolsmith",level:5},Brain:{memories:{job_site:{pos:[I;0,0,0],dimension:"minecraft:overworld"}}},Riches:9999999,Offers:{Recipes:[{maxUses:99999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:64b},buyB:{id:"minecraft:book",Count:1b},sell:{id:"minecraft:iron_pickaxe",Count:1b,tag:{Enchantments:[{id:"minecraft:fortune",lvl:2}]}}},{maxUses:99999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:64b},buyB:{id:"minecraft:book",Count:1b},sell:{id:"minecraft:iron_pickaxe",Count:1b,tag:{Enchantments:[{id:"minecraft:silk_touch",lvl:1}]}}},
{buy:{id:emerald,Count:30} ,sell:{id:diamond_pickaxe,Count:1},maxUses:999999 },
{buy:{id:emerald,Count:10} ,sell:{id:iron_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:oak_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:birch_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:dark_oak_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:jungle_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:spruce_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:stripped_acacia_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 },
{buy:{id:cobblestone,Count:3},buyB:{id:acacia_log,Count:1} ,sell:{id:stone_pickaxe,Count:1},maxUses:999999 }
]}}
农夫
/summon minecraft:villager ~ ~1 ~ {CustomName:"[{\"text\":\"菜贩子\",\"color\":\"dark_green\",\"bold\":true,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"obfuscated\":false}]",Glowing:1b,Invulnerable:1b,PersistenceRequired:1b,DeathLootTable:"entities/empty",Attributes:[{Name:"generic.followRange",Base:1}],VillagerData:{type:"minecraft:jungle",profession:"minecraft:farmer",level:5},Brain:{memories:{job_site:{pos:[I;0,0,0],dimension:"minecraft:overworld"}}},Riches:9999999,Offers:{Recipes:[{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:1b},sell:{id:"minecraft:bread",Count:6b}},{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:wheat",Count:32b},sell:{id:"minecraft:emerald",Count:1b}},{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:carrot",Count:28b},sell:{id:"minecraft:emerald",Count:1b}},{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:potato",Count:30b},sell:{id:"minecraft:emerald",Count:1b}},{maxUses:99999,max:null,uses:0,buy:{id:"minecraft:wheat_seeds",Count:48b},sell:{id:"minecraft:emerald",Count:1b}}]}}
制箭
/summon minecraft:villager ~ ~1 ~ {CustomName:"[{\"text\":\"制箭批发商\",\"color\":\"white\",\"bold\":true,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"obfuscated\":false}]",Glowing:1b,Invulnerable:1b,PersistenceRequired:1b,DeathLootTable:"entities/empty",Attributes:[{Name:"generic.followRange",Base:1}],VillagerData:{type:"minecraft:jungle",profession:"minecraft:fletcher",level:5},Brain:{memories:{job_site:{pos:[I;0,0,0],dimension:"minecraft:overworld"}}},Riches:9999999,Offers:{Recipes:[{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:1b},sell:{id:"minecraft:bow",Count:1b}},{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:1b},sell:{id:"minecraft:arrow",Count:10b}},{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:stick",Count:48b},sell:{id:"minecraft:emerald",Count:1b}},{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:flint",Count:30b},sell:{id:"minecraft:emerald",Count:1b}}]}}
渔夫
/summon minecraft:villager ~ ~1 ~ {CustomName:"[{\"text\":\"老渔翁\",\"color\":\"blue\",\"bold\":true,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"obfuscated\":false}]",Glowing:1b,Invulnerable:1b,PersistenceRequired:1b,DeathLootTable:"entities/empty",Attributes:[{Name:"generic.followRange",Base:1}],VillagerData:{type:"minecraft:savanna",profession:"minecraft:fisherman",level:5},Brain:{memories:{job_site:{pos:[I;0,0,0],dimension:"minecraft:overworld"}}},Riches:9999999,Offers:{Recipes:[{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:2b},sell:{id:"minecraft:salmon",Count:1b}},{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:2b},sell:{id:"minecraft:cod",Count:1b,tag:{display:{Name:"[{\"text\":\"\",\"bold\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"obfuscated\":false}]"}}}},{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:5b},sell:{id:"minecraft:fishing_rod",Count:1b}},{maxUses:9999999,max:null,uses:0,buy:{id:"minecraft:salmon",Count:20b},sell:{id:"minecraft:emerald",Count:1b}},{uses:0,buy:{id:"minecraft:cod",Count:20b,tag:{display:{Name:"[{\"text\":\"\",\"bold\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"obfuscated\":false}]"}}},sell:{id:"minecraft:emerald",Count:1b}}]}}
图书馆管理员
/summon minecraft:villager ~ ~1 ~ {CustomName:"[{\"text\":\"图书馆管理员\",\"color\":\"white\",\"bold\":true,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"obfuscated\":false}]",Invulnerable:1b,PersistenceRequired:1b,Attributes:[{Name:"generic.followRange",Base:3}],VillagerData:{type:"minecraft:plains",profession:"minecraft:librarian",level:5},Brain:{memories:{job_site:{pos:[I;0,0,0],dimension:"minecraft:overworld"}}},Riches:999999999999999,Offers:{Recipes:[{maxUses:99999,max:null,uses:0,buy:{id:"minecraft:writable_book",Count:2b},sell:{id:"minecraft:emerald",Count:1b}},{maxUses:99999,max:null,uses:0,buy:{id:"minecraft:paper",Count:24b},sell:{id:"minecraft:emerald",Count:1b}},{maxUses:99999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:1b},sell:{id:"minecraft:lantern",Count:1b}},{maxUses:99999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:20b},sell:{id:"minecraft:name_tag",Count:1b}},{maxUses:99999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:5b},sell:{id:"minecraft:clock",Count:1b}},{maxUses:99999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:6b},sell:{id:"minecraft:bookshelf",Count:3b}},{maxUses:99999,max:null,uses:0,buy:{id:"minecraft:emerald",Count:1b},sell:{id:"minecraft:book",Count:1b}}]}}