浏览代码

Now with working UI!

AY 5 年之前
父节点
当前提交
974170456f
共有 39 个文件被更改,包括 1168 次插入339 次删除
  1. 196 0
      common.go
  2. 13 18
      main.go
  3. 41 0
      mc_core.go
  4. 48 0
      mc_read.go
  5. 5 1
      mod/server/core.go
  6. 12 0
      mod/server/manage.go
  7. 5 5
      mod/server/server.go
  8. 393 0
      server/crash-reports/crash-2020-12-15_19.27.55-server.txt
  9. 二进制
      server/logs/2020-12-13-1.log.gz
  10. 二进制
      server/logs/2020-12-13-2.log.gz
  11. 二进制
      server/logs/2020-12-13-3.log.gz
  12. 二进制
      server/logs/2020-12-13-4.log.gz
  13. 二进制
      server/logs/2020-12-13-5.log.gz
  14. 二进制
      server/logs/2020-12-13-6.log.gz
  15. 二进制
      server/logs/2020-12-13-7.log.gz
  16. 二进制
      server/logs/2020-12-15-1.log.gz
  17. 二进制
      server/logs/2020-12-15-2.log.gz
  18. 二进制
      server/logs/2020-12-15-3.log.gz
  19. 二进制
      server/logs/2020-12-15-4.log.gz
  20. 二进制
      server/logs/2020-12-15-5.log.gz
  21. 二进制
      server/logs/2020-12-15-6.log.gz
  22. 二进制
      server/logs/2020-12-15-7.log.gz
  23. 45 267
      server/logs/latest.log
  24. 1 1
      server/server.properties
  25. 1 1
      server/usercache.json
  26. 二进制
      server/world/DIM-1/data/raids.dat
  27. 二进制
      server/world/DIM1/data/raids_end.dat
  28. 390 30
      server/world/advancements/3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f.json
  29. 二进制
      server/world/data/raids.dat
  30. 二进制
      server/world/level.dat
  31. 二进制
      server/world/level.dat_old
  32. 二进制
      server/world/playerdata/3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f.dat
  33. 二进制
      server/world/playerdata/3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f.dat_old
  34. 二进制
      server/world/region/r.-1.-1.mca
  35. 二进制
      server/world/region/r.-1.0.mca
  36. 二进制
      server/world/region/r.0.-1.mca
  37. 二进制
      server/world/region/r.0.0.mca
  38. 1 1
      server/world/stats/3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f.json
  39. 17 15
      web.go

+ 196 - 0
common.go

@@ -0,0 +1,196 @@
+package main
+
+import (
+	"bufio"
+	"encoding/base64"
+	"errors"
+	"io/ioutil"
+	"log"
+	"net/http"
+	"os"
+	"strconv"
+	"time"
+)
+
+/*
+	SYSTEM COMMON FUNCTIONS
+
+	This is a system function that put those we usually use function but not belongs to
+	any module / system.
+
+	Author: TOBY CHUI
+*/
+
+/*
+	Basic Response Functions
+
+	Send response with ease
+*/
+//Send text response with given w and message as string
+func sendTextResponse(w http.ResponseWriter, msg string) {
+	w.Write([]byte(msg))
+}
+
+//Send JSON response, with an extra json header
+func sendJSONResponse(w http.ResponseWriter, json string) {
+	w.Header().Set("Content-Type", "application/json")
+	w.Write([]byte(json))
+}
+
+func sendErrorResponse(w http.ResponseWriter, errMsg string) {
+	w.Header().Set("Content-Type", "application/json")
+	w.Write([]byte("{\"error\":\"" + errMsg + "\"}"))
+}
+
+func sendOK(w http.ResponseWriter) {
+	w.Header().Set("Content-Type", "application/json")
+	w.Write([]byte("\"OK\""))
+}
+
+/*
+	The paramter move function (mv)
+
+	You can find similar things in the PHP version of ArOZ Online Beta. You need to pass in
+	r (HTTP Request Object)
+	getParamter (string, aka $_GET['This string])
+
+	Will return
+	Paramter string (if any)
+	Error (if error)
+
+*/
+func mv(r *http.Request, getParamter string, postMode bool) (string, error) {
+	if postMode == false {
+		//Access the paramter via GET
+		keys, ok := r.URL.Query()[getParamter]
+
+		if !ok || len(keys[0]) < 1 {
+			//log.Println("Url Param " + getParamter +" is missing")
+			return "", errors.New("GET paramter " + getParamter + " not found or it is empty")
+		}
+
+		// Query()["key"] will return an array of items,
+		// we only want the single item.
+		key := keys[0]
+		return string(key), nil
+	} else {
+		//Access the parameter via POST
+		r.ParseForm()
+		x := r.Form.Get(getParamter)
+		if len(x) == 0 || x == "" {
+			return "", errors.New("POST paramter " + getParamter + " not found or it is empty")
+		}
+		return string(x), nil
+	}
+
+}
+
+func stringInSlice(a string, list []string) bool {
+	for _, b := range list {
+		if b == a {
+			return true
+		}
+	}
+	return false
+}
+
+func fileExists(filename string) bool {
+	_, err := os.Stat(filename)
+	if os.IsNotExist(err) {
+		return false
+	}
+	return true
+}
+
+func isDir(path string) bool {
+	if fileExists(path) == false {
+		return false
+	}
+	fi, err := os.Stat(path)
+	if err != nil {
+		log.Fatal(err)
+		return false
+	}
+	switch mode := fi.Mode(); {
+	case mode.IsDir():
+		return true
+	case mode.IsRegular():
+		return false
+	}
+	return false
+}
+
+func inArray(arr []string, str string) bool {
+	for _, a := range arr {
+		if a == str {
+			return true
+		}
+	}
+	return false
+}
+
+func timeToString(targetTime time.Time) string {
+	return targetTime.Format("2006-01-02 15:04:05")
+}
+
+func intToString(number int) string {
+	return strconv.Itoa(number)
+}
+
+func stringToInt(number string) (int, error) {
+	return strconv.Atoi(number)
+}
+
+func stringToInt64(number string) (int64, error) {
+	i, err := strconv.ParseInt(number, 10, 64)
+	if err != nil {
+		return -1, err
+	}
+	return i, nil
+}
+
+func int64ToString(number int64) string {
+	convedNumber := strconv.FormatInt(number, 10)
+	return convedNumber
+}
+
+func getUnixTime() int64 {
+	return time.Now().Unix()
+}
+
+func loadImageAsBase64(filepath string) (string, error) {
+	if !fileExists(filepath) {
+		return "", errors.New("File not exists")
+	}
+	f, _ := os.Open(filepath)
+	reader := bufio.NewReader(f)
+	content, _ := ioutil.ReadAll(reader)
+	encoded := base64.StdEncoding.EncodeToString(content)
+	return string(encoded), nil
+}
+
+func pushToSliceIfNotExist(slice []string, newItem string) []string {
+	itemExists := false
+	for _, item := range slice {
+		if item == newItem {
+			itemExists = true
+		}
+	}
+
+	if !itemExists {
+		slice = append(slice, newItem)
+	}
+
+	return slice
+}
+
+func removeFromSliceIfExists(slice []string, target string) []string {
+	newSlice := []string{}
+	for _, item := range slice {
+		if item != target {
+			newSlice = append(newSlice, item)
+		}
+	}
+
+	return newSlice
+}

+ 13 - 18
main.go

@@ -2,36 +2,31 @@ package main
 
 import (
 	"fmt"
-	"time"
 
-	"aytechnology.us/gominecraft/mod/mcping"
+	"aytechnology.us/gominecraft/mod/config"
+
 	"aytechnology.us/gominecraft/mod/server"
 )
 
+//MCServer should not be exported
+var MCServer *server.Handler
+var Config *config.Handler
+
 func main() {
-	server := server.NewHandler("java", "server.jar", "256M", "256M", "")
-	server.StartService()
+	MCServer = server.NewHandler("java", "server.jar", "1024M", "1024M", "")
+	Config = config.NewHandler("./server/")
+
+	webServer("./webroot/", "8080")
+
 	go func() {
 		i := 0
 		for {
-			end := server.LenLog()
-			log := server.ReadRangeLog(i, end)
+			end := MCServer.LenLog()
+			log := MCServer.ReadRangeLog(i, end)
 			for _, line := range log {
 				fmt.Println(line.Log)
 			}
 			i = end
-
-			//for another shit
-			resp, _ := mcping.Ping("localhost:25565")
-			for _, user := range resp.Sample {
-				server.SendCommand("kick " + user.Name + " " + user.Name + " BYE~")
-			}
 		}
 	}()
-
-	//auto stop
-	time.Sleep(50 * time.Second)
-	fmt.Println("STOP!!")
-	server.SendCommand("stop")
-	time.Sleep(40 * time.Second)
 }

+ 41 - 0
mc_core.go

@@ -0,0 +1,41 @@
+package main
+
+import (
+	"net/http"
+
+	"aytechnology.us/gominecraft/mod/mcping"
+)
+
+func StartMCServer(w http.ResponseWriter, r *http.Request) {
+	MCServer.StartService()
+	sendJSONResponse(w, "OK")
+}
+
+func StopMCServer(w http.ResponseWriter, r *http.Request) {
+	MCServer.SendCommand("stop")
+
+	sendJSONResponse(w, "OK")
+}
+
+func KillMCServer(w http.ResponseWriter, r *http.Request) {
+	MCServer.KillServer()
+
+	sendJSONResponse(w, "OK")
+}
+
+func RestartMCServer(w http.ResponseWriter, r *http.Request) {
+	MCServer.SendCommand("stop")
+	MCServer.Wait()
+	MCServer.StartService()
+	sendJSONResponse(w, "OK")
+}
+
+func KickAllMCServer(w http.ResponseWriter, r *http.Request) {
+
+	resp, _ := mcping.Ping("localhost:25565")
+	for _, user := range resp.Sample {
+		MCServer.SendCommand("kick " + user.Name + " " + user.Name + " BYE~")
+	}
+
+	sendJSONResponse(w, "OK")
+}

+ 48 - 0
mc_read.go

@@ -0,0 +1,48 @@
+package main
+
+import (
+	"encoding/json"
+	"net/http"
+)
+
+func ReadLog(w http.ResponseWriter, r *http.Request) {
+	log := MCServer.ReadAllLog()
+	jsonData, _ := json.Marshal(log)
+	sendJSONResponse(w, string(jsonData))
+}
+
+func ReadBanIP(w http.ResponseWriter, r *http.Request) {
+	config := Config.ReadAllBannedIPs()
+	jsonData, _ := json.Marshal(config)
+	sendJSONResponse(w, string(jsonData))
+}
+
+func ReadBanPlayer(w http.ResponseWriter, r *http.Request) {
+	config := Config.ReadAllBannedPlayers()
+	jsonData, _ := json.Marshal(config)
+	sendJSONResponse(w, string(jsonData))
+}
+
+func ReadEULA(w http.ResponseWriter, r *http.Request) {
+	config := Config.ReadEULA()
+	jsonData, _ := json.Marshal(config)
+	sendJSONResponse(w, string(jsonData))
+}
+
+func ReadOps(w http.ResponseWriter, r *http.Request) {
+	config := Config.ReadAllOps()
+	jsonData, _ := json.Marshal(config)
+	sendJSONResponse(w, string(jsonData))
+}
+
+func ReadProperties(w http.ResponseWriter, r *http.Request) {
+	config := Config.ReadAllProperties()
+	jsonData, _ := json.Marshal(config)
+	sendJSONResponse(w, string(jsonData))
+}
+
+func ReadWhitelist(w http.ResponseWriter, r *http.Request) {
+	config := Config.ReadAllWhitelists()
+	jsonData, _ := json.Marshal(config)
+	sendJSONResponse(w, string(jsonData))
+}

+ 5 - 1
mod/server/core.go

@@ -1,6 +1,9 @@
 package server
 
-import "io"
+import (
+	"io"
+	"os/exec"
+)
 
 //Handler is handler
 type Handler struct {
@@ -11,6 +14,7 @@ type Handler struct {
 	args      string
 	stdout    io.ReadCloser
 	stdin     io.WriteCloser
+	cmd       *exec.Cmd
 	log       []Log
 }
 

+ 12 - 0
mod/server/manage.go

@@ -0,0 +1,12 @@
+package server
+
+//KillServer is exported
+func (server *Handler) KillServer() bool {
+	server.cmd.Process.Kill()
+	return true
+}
+
+//Wait is exported function
+func (server *Handler) Wait() {
+	server.cmd.Wait()
+}

+ 5 - 5
mod/server/server.go

@@ -14,11 +14,11 @@ func (server *Handler) StartService() {
 	fmt.Println(cmdName)
 	cmdArgs := strings.Fields(cmdName)
 
-	cmd := exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...)
-	cmd.Dir = "./server/"
-	server.stdout, _ = cmd.StdoutPipe()
-	server.stdin, _ = cmd.StdinPipe()
-	cmd.Start()
+	server.cmd = exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...)
+	server.cmd.Dir = "./server/"
+	server.stdout, _ = server.cmd.StdoutPipe()
+	server.stdin, _ = server.cmd.StdinPipe()
+	server.cmd.Start()
 
 	server.StartStdout()
 	//cmd.Wait()

+ 393 - 0
server/crash-reports/crash-2020-12-15_19.27.55-server.txt

@@ -0,0 +1,393 @@
+---- Minecraft Crash Report ----
+// But it works on my machine.
+
+Time: 15/12/2020 下午7:27
+Description: Watching Server
+
+java.lang.Error: Watchdog
+	at app//dcw.c(SourceFile:102)
+	at app//ddh.a(SourceFile:129)
+	at app//ddh.a(SourceFile:223)
+	at app//ddh.a(SourceFile:204)
+	at app//dde.a(SourceFile:267)
+	at app//dde.a(SourceFile:207)
+	at app//aqa.a(SourceFile:909)
+	at app//aqa.a(SourceFile:855)
+	at app//aqa.g(SourceFile:816)
+	at app//aqa.a(SourceFile:590)
+	at app//aqm.a(SourceFile:2145)
+	at app//aqm.g(SourceFile:2098)
+	at app//aqm.k(SourceFile:2547)
+	at app//aqn.k(SourceFile:542)
+	at app//bdq.k(SourceFile:43)
+	at app//aqm.j(SourceFile:2254)
+	at app//aqn.j(SourceFile:342)
+	at app//beb.j(SourceFile:88)
+	at app//aag.a(SourceFile:621)
+	at app//aag$$Lambda$3802/0x00000008014b6040.accept(Unknown Source)
+	at app//brx.a(SourceFile:561)
+	at app//aag.a(SourceFile:411)
+	at app//net.minecraft.server.MinecraftServer.b(SourceFile:871)
+	at app//zg.b(SourceFile:312)
+	at app//net.minecraft.server.MinecraftServer.a(SourceFile:811)
+	at app//net.minecraft.server.MinecraftServer.w(SourceFile:670)
+	at app//net.minecraft.server.MinecraftServer.a(SourceFile:257)
+	at app//net.minecraft.server.MinecraftServer$$Lambda$3362/0x00000008012c6840.run(Unknown Source)
+	at java.base@13.0.2/java.lang.Thread.run(Thread.java:830)
+
+
+A detailed walkthrough of the error, its code path and all known details is as follows:
+---------------------------------------------------------------------------------------
+
+-- Head --
+Thread: Server Watchdog
+Stacktrace:
+	at app//dcw.c(SourceFile:102)
+	at app//ddh.a(SourceFile:129)
+	at app//ddh.a(SourceFile:223)
+	at app//ddh.a(SourceFile:204)
+	at app//dde.a(SourceFile:267)
+	at app//dde.a(SourceFile:207)
+	at app//aqa.a(SourceFile:909)
+	at app//aqa.a(SourceFile:855)
+	at app//aqa.g(SourceFile:816)
+	at app//aqa.a(SourceFile:590)
+	at app//aqm.a(SourceFile:2145)
+	at app//aqm.g(SourceFile:2098)
+	at app//aqm.k(SourceFile:2547)
+	at app//aqn.k(SourceFile:542)
+	at app//bdq.k(SourceFile:43)
+	at app//aqm.j(SourceFile:2254)
+	at app//aqn.j(SourceFile:342)
+	at app//beb.j(SourceFile:88)
+	at app//aag.a(SourceFile:621)
+	at app//aag$$Lambda$3802/0x00000008014b6040.accept(Unknown Source)
+	at app//brx.a(SourceFile:561)
+	at app//aag.a(SourceFile:411)
+	at app//net.minecraft.server.MinecraftServer.b(SourceFile:871)
+	at app//zg.b(SourceFile:312)
+	at app//net.minecraft.server.MinecraftServer.a(SourceFile:811)
+	at app//net.minecraft.server.MinecraftServer.w(SourceFile:670)
+	at app//net.minecraft.server.MinecraftServer.a(SourceFile:257)
+
+-- Thread Dump --
+Details:
+	Threads: "Reference Handler" daemon prio=10 Id=2 RUNNABLE
+	at java.base@13.0.2/java.lang.ref.Reference.waitForReferencePendingList(Native Method)
+	at java.base@13.0.2/java.lang.ref.Reference.processPendingReferences(Reference.java:241)
+	at java.base@13.0.2/java.lang.ref.Reference$ReferenceHandler.run(Reference.java:213)
+
+
+"Finalizer" daemon prio=8 Id=3 WAITING on java.lang.ref.ReferenceQueue$Lock@22735de4
+	at java.base@13.0.2/java.lang.Object.wait(Native Method)
+	-  waiting on java.lang.ref.ReferenceQueue$Lock@22735de4
+	at java.base@13.0.2/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
+	at java.base@13.0.2/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:176)
+	at java.base@13.0.2/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:170)
+
+
+"Signal Dispatcher" daemon prio=9 Id=4 RUNNABLE
+
+
+"Common-Cleaner" daemon prio=8 Id=11 TIMED_WAITING on java.lang.ref.ReferenceQueue$Lock@9e82ba1
+	at java.base@13.0.2/java.lang.Object.wait(Native Method)
+	-  waiting on java.lang.ref.ReferenceQueue$Lock@9e82ba1
+	at java.base@13.0.2/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
+	at java.base@13.0.2/jdk.internal.ref.CleanerImpl.run(CleanerImpl.java:148)
+	at java.base@13.0.2/java.lang.Thread.run(Thread.java:830)
+	at java.base@13.0.2/jdk.internal.misc.InnocuousThread.run(InnocuousThread.java:134)
+
+
+"Worker-Bootstrap-1" daemon prio=5 Id=15 RUNNABLE
+	at app//com.mojang.datafixers.DSL.func(DSL.java:207)
+	at app//com.mojang.datafixers.functions.Apply.one(Apply.java:45)
+	at app//com.mojang.datafixers.functions.PointFreeRule$One.rewrite(PointFreeRule.java:651)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:571)
+	at app//com.mojang.datafixers.functions.Comp.one(Comp.java:43)
+	at app//com.mojang.datafixers.functions.PointFreeRule$One.rewrite(PointFreeRule.java:651)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:571)
+	at app//com.mojang.datafixers.functions.Comp.lambda$one$4(Comp.java:44)
+	...
+
+
+"Worker-Bootstrap-2" daemon prio=5 Id=16 RUNNABLE
+	at app//com.mojang.datafixers.optics.Optics.inj2(Optics.java:238)
+	at app//com.mojang.datafixers.functions.PointFreeRule$SortInj.doRewrite(PointFreeRule.java:298)
+	at app//com.mojang.datafixers.functions.PointFreeRule$CompRewrite.rewrite(PointFreeRule.java:198)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:567)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:567)
+	at app//com.mojang.datafixers.functions.Apply.lambda$one$5(Apply.java:46)
+	at app//com.mojang.datafixers.functions.Apply$$Lambda$1305/0x0000000800f7a040.get(Unknown Source)
+	at java.base@13.0.2/java.util.Optional.orElseGet(Optional.java:362)
+	...
+
+
+"Worker-Bootstrap-3" daemon prio=5 Id=17 RUNNABLE
+	at java.base@13.0.2/java.util.HashMap$EntrySet.iterator(HashMap.java:1014)
+	at java.base@13.0.2/java.util.AbstractMap.equals(AbstractMap.java:486)
+	at java.base@13.0.2/java.util.Objects.equals(Objects.java:78)
+	at app//com.mojang.datafixers.types.templates.TaggedChoice.equals(TaggedChoice.java:107)
+	at java.base@13.0.2/java.util.Objects.equals(Objects.java:78)
+	at app//com.mojang.datafixers.types.templates.Named.equals(Named.java:81)
+	at java.base@13.0.2/java.util.Objects.equals(Objects.java:78)
+	at app//com.mojang.datafixers.types.templates.Check.equals(Check.java:97)
+	...
+
+
+"Worker-Bootstrap-4" daemon prio=5 Id=19 RUNNABLE
+	at app//com.mojang.datafixers.functions.PointFreeRule.orElseStrict(PointFreeRule.java:553)
+	at app//com.mojang.datafixers.functions.PointFreeRule.once(PointFreeRule.java:601)
+	at app//com.mojang.datafixers.functions.PointFreeRule.lambda$once$3(PointFreeRule.java:601)
+	at app//com.mojang.datafixers.functions.PointFreeRule$$Lambda$623/0x0000000800de7440.get(Unknown Source)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:571)
+	at app//com.mojang.datafixers.functions.Comp.lambda$one$4(Comp.java:44)
+	at app//com.mojang.datafixers.functions.Comp$$Lambda$1287/0x0000000800f7f440.get(Unknown Source)
+	at java.base@13.0.2/java.util.Optional.orElseGet(Optional.java:362)
+	...
+
+
+"Worker-Bootstrap-5" daemon prio=5 Id=21 RUNNABLE
+	at app//com.mojang.datafixers.functions.PointFreeRule.orElseStrict(PointFreeRule.java:553)
+	at app//com.mojang.datafixers.functions.PointFreeRule.once(PointFreeRule.java:601)
+	at app//com.mojang.datafixers.functions.PointFreeRule.lambda$once$3(PointFreeRule.java:601)
+	at app//com.mojang.datafixers.functions.PointFreeRule$$Lambda$623/0x0000000800de7440.get(Unknown Source)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:571)
+	at app//com.mojang.datafixers.functions.Apply.one(Apply.java:45)
+	at app//com.mojang.datafixers.functions.PointFreeRule$One.rewrite(PointFreeRule.java:651)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:571)
+	...
+
+
+"Worker-Bootstrap-6" daemon prio=5 Id=18 RUNNABLE
+	at app//com.mojang.datafixers.DSL.func(DSL.java:207)
+	at app//com.mojang.datafixers.functions.Comp.lambda$one$4(Comp.java:44)
+	at app//com.mojang.datafixers.functions.Comp$$Lambda$1287/0x0000000800f7f440.get(Unknown Source)
+	at java.base@13.0.2/java.util.Optional.orElseGet(Optional.java:362)
+	at app//com.mojang.datafixers.functions.Comp.one(Comp.java:44)
+	at app//com.mojang.datafixers.functions.PointFreeRule$One.rewrite(PointFreeRule.java:651)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:571)
+	at app//com.mojang.datafixers.functions.Apply.lambda$one$5(Apply.java:46)
+	...
+
+
+"Worker-Bootstrap-7" daemon prio=5 Id=20 RUNNABLE
+	at app//com.mojang.datafixers.functions.PointFreeRule$One.rewrite(PointFreeRule.java:651)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:571)
+	at app//com.mojang.datafixers.functions.Comp.one(Comp.java:43)
+	at app//com.mojang.datafixers.functions.PointFreeRule$One.rewrite(PointFreeRule.java:651)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:571)
+	at app//com.mojang.datafixers.functions.Comp.one(Comp.java:43)
+	at app//com.mojang.datafixers.functions.PointFreeRule$One.rewrite(PointFreeRule.java:651)
+	at app//com.mojang.datafixers.functions.PointFreeRule$OrElse.rewrite(PointFreeRule.java:571)
+	...
+
+
+"Timer hack thread" daemon prio=5 Id=22 TIMED_WAITING
+	at java.base@13.0.2/java.lang.Thread.sleep(Native Method)
+	at app//x$6.run(SourceFile:636)
+
+
+"Worker-Main-8" daemon prio=5 Id=23 WAITING on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/jdk.internal.misc.Unsafe.park(Native Method)
+	-  waiting on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1635)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
+
+
+"Worker-Main-9" daemon prio=5 Id=24 WAITING on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/jdk.internal.misc.Unsafe.park(Native Method)
+	-  waiting on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1633)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
+
+
+"Worker-Main-10" daemon prio=5 Id=26 WAITING on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/jdk.internal.misc.Unsafe.park(Native Method)
+	-  waiting on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1633)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
+
+
+"Worker-Main-11" daemon prio=5 Id=28 RUNNABLE
+	at app//cvs.a(SourceFile:11)
+	at app//cwr.a(SourceFile:12)
+	at app//cwm.b(SourceFile:13)
+	at app//cwm$$Lambda$2450/0x000000080115e440.apply(Unknown Source)
+	at app//cvh.a(SourceFile:26)
+	-  locked it.unimi.dsi.fastutil.longs.Long2IntLinkedOpenHashMap@29fcf35b
+	at app//cwc.a(SourceFile:44)
+	at app//cwn.a(SourceFile:15)
+	at app//cwn$$Lambda$2451/0x000000080115dc40.apply(Unknown Source)
+	...
+
+
+"Worker-Main-12" daemon prio=5 Id=29 WAITING on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/jdk.internal.misc.Unsafe.park(Native Method)
+	-  waiting on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1633)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
+
+
+"Worker-Main-13" daemon prio=5 Id=25 WAITING on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/jdk.internal.misc.Unsafe.park(Native Method)
+	-  waiting on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1633)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
+
+
+"Worker-Main-14" daemon prio=5 Id=27 WAITING on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/jdk.internal.misc.Unsafe.park(Native Method)
+	-  waiting on java.util.concurrent.ForkJoinPool@68fdf76f
+	at java.base@13.0.2/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1633)
+	at java.base@13.0.2/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
+
+
+"Snooper Timer" daemon prio=5 Id=31 WAITING on java.util.TaskQueue@6adf42ca
+	at java.base@13.0.2/java.lang.Object.wait(Native Method)
+	-  waiting on java.util.TaskQueue@6adf42ca
+	at java.base@13.0.2/java.lang.Object.wait(Object.java:326)
+	at java.base@13.0.2/java.util.TimerThread.mainLoop(Timer.java:527)
+	at java.base@13.0.2/java.util.TimerThread.run(Timer.java:506)
+
+
+"Server thread" prio=5 Id=30 RUNNABLE
+	at app//dcw.c(SourceFile:102)
+	at app//ddh.a(SourceFile:129)
+	at app//ddh.a(SourceFile:223)
+	at app//ddh.a(SourceFile:204)
+	at app//dde.a(SourceFile:267)
+	at app//dde.a(SourceFile:207)
+	at app//aqa.a(SourceFile:909)
+	at app//aqa.a(SourceFile:855)
+	...
+
+
+"DestroyJavaVM" prio=5 Id=34 RUNNABLE
+
+
+"ObjectCleanerThread" daemon prio=1 Id=35 TIMED_WAITING on java.lang.ref.ReferenceQueue$Lock@1057f392
+	at java.base@13.0.2/java.lang.Object.wait(Native Method)
+	-  waiting on java.lang.ref.ReferenceQueue$Lock@1057f392
+	at java.base@13.0.2/java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:155)
+	at app//io.netty.util.internal.ObjectCleaner$1.run(ObjectCleaner.java:54)
+	at app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
+	at java.base@13.0.2/java.lang.Thread.run(Thread.java:830)
+
+
+"Netty Server IO #0" daemon prio=5 Id=36 RUNNABLE (in native)
+	at java.base@13.0.2/sun.nio.ch.KQueue.poll(Native Method)
+	at java.base@13.0.2/sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:122)
+	at java.base@13.0.2/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:124)
+	-  locked sun.nio.ch.Util$2@15e7fef9
+	-  locked sun.nio.ch.KQueueSelectorImpl@667a1311
+	at java.base@13.0.2/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:136)
+	at app//io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
+	at app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
+	at app//io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
+	at java.base@13.0.2/java.lang.Thread.run(Thread.java:830)
+
+
+"IO-Worker-16" prio=5 Id=38 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@76a3c406
+	at java.base@13.0.2/jdk.internal.misc.Unsafe.park(Native Method)
+	-  waiting on java.util.concurrent.SynchronousQueue$TransferStack@76a3c406
+	at java.base@13.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:235)
+	at java.base@13.0.2/java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:462)
+	at java.base@13.0.2/java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:361)
+	at java.base@13.0.2/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
+	at java.base@13.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1053)
+	at java.base@13.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
+	at java.base@13.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	...
+
+
+"IO-Worker-17" prio=5 Id=39 TIMED_WAITING on java.util.concurrent.SynchronousQueue$TransferStack@76a3c406
+	at java.base@13.0.2/jdk.internal.misc.Unsafe.park(Native Method)
+	-  waiting on java.util.concurrent.SynchronousQueue$TransferStack@76a3c406
+	at java.base@13.0.2/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:235)
+	at java.base@13.0.2/java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:462)
+	at java.base@13.0.2/java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:361)
+	at java.base@13.0.2/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
+	at java.base@13.0.2/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1053)
+	at java.base@13.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
+	at java.base@13.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
+	...
+
+
+"Netty Server IO #1" daemon prio=5 Id=40 RUNNABLE (in native)
+	at java.base@13.0.2/sun.nio.ch.KQueue.poll(Native Method)
+	at java.base@13.0.2/sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:122)
+	at java.base@13.0.2/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:124)
+	-  locked sun.nio.ch.Util$2@59476223
+	-  locked sun.nio.ch.KQueueSelectorImpl@73fd4fc4
+	at java.base@13.0.2/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:136)
+	at app//io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
+	at app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
+	at app//io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
+	at java.base@13.0.2/java.lang.Thread.run(Thread.java:830)
+
+
+"Server Watchdog" daemon prio=5 Id=44 RUNNABLE
+	at java.management@13.0.2/sun.management.ThreadImpl.dumpThreads0(Native Method)
+	at java.management@13.0.2/sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:502)
+	at java.management@13.0.2/sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:490)
+	at app//zj.run(SourceFile:49)
+	at java.base@13.0.2/java.lang.Thread.run(Thread.java:830)
+
+
+"Netty Server IO #2" daemon prio=5 Id=45 RUNNABLE
+	at app//io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:285)
+	at app//io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:264)
+	at app//io.netty.channel.DefaultChannelPipeline.fireExceptionCaught(DefaultChannelPipeline.java:953)
+	at app//io.netty.channel.ChannelFutureListener$3.operationComplete(ChannelFutureListener.java:69)
+	at app//io.netty.channel.ChannelFutureListener$3.operationComplete(ChannelFutureListener.java:65)
+	at app//io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
+	at app//io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:485)
+	at app//io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:424)
+	...
+
+
+"Netty Server IO #3" daemon prio=5 Id=49 RUNNABLE (in native)
+	at java.base@13.0.2/sun.nio.ch.KQueue.poll(Native Method)
+	at java.base@13.0.2/sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:122)
+	at java.base@13.0.2/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:124)
+	-  locked sun.nio.ch.Util$2@45a92831
+	-  locked sun.nio.ch.KQueueSelectorImpl@2d425776
+	at java.base@13.0.2/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:136)
+	at app//io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:756)
+	at app//io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:411)
+	at app//io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
+	at java.base@13.0.2/java.lang.Thread.run(Thread.java:830)
+
+
+
+Stacktrace:
+	at zj.run(SourceFile:65)
+	at java.base/java.lang.Thread.run(Thread.java:830)
+
+-- Performance stats --
+Details:
+	Random tick rate: 3
+	Level stats: ResourceKey[minecraft:dimension / minecraft:overworld]: players: 0, entities: 286 [minecraft:item:32,minecraft:pig:30,minecraft:skeleton:30,minecraft:creeper:29,minecraft:zombie:24], block_entities: 38 [minecraft:mob_spawner:21,minecraft:chest:14,minecraft:beehive:3], block_ticks: 1, fluid_ticks: 0, chunk_source: ServerChunkCache: 2331,
+ResourceKey[minecraft:dimension / minecraft:the_nether]: players: 0, entities: 0 [], block_entities: 0 [], block_ticks: 0, fluid_ticks: 0, chunk_source: ServerChunkCache: 0,
+ResourceKey[minecraft:dimension / minecraft:the_end]: players: 0, entities: 0 [], block_entities: 0 [], block_ticks: 0, fluid_ticks: 0, chunk_source: ServerChunkCache: 0
+
+-- System Details --
+Details:
+	Minecraft Version: 1.16.4
+	Minecraft Version ID: 1.16.4
+	Operating System: Mac OS X (x86_64) version 10.16
+	Java Version: 13.0.2, Oracle Corporation
+	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode, sharing), Oracle Corporation
+	Memory: 3381576 bytes (3 MB) / 268435456 bytes (256 MB) up to 268435456 bytes (256 MB)
+	CPUs: 8
+	JVM Flags: 2 total; -Xmx256M -Xms256M
+	Player Count: 0 / 99; []
+	Data Packs: vanilla
+	Is Modded: Unknown (can't tell)
+	Type: Dedicated Server (map_server.txt)

二进制
server/logs/2020-12-13-1.log.gz


二进制
server/logs/2020-12-13-2.log.gz


二进制
server/logs/2020-12-13-3.log.gz


二进制
server/logs/2020-12-13-4.log.gz


二进制
server/logs/2020-12-13-5.log.gz


二进制
server/logs/2020-12-13-6.log.gz


二进制
server/logs/2020-12-13-7.log.gz


二进制
server/logs/2020-12-15-1.log.gz


二进制
server/logs/2020-12-15-2.log.gz


二进制
server/logs/2020-12-15-3.log.gz


二进制
server/logs/2020-12-15-4.log.gz


二进制
server/logs/2020-12-15-5.log.gz


二进制
server/logs/2020-12-15-6.log.gz


二进制
server/logs/2020-12-15-7.log.gz


+ 45 - 267
server/logs/latest.log

@@ -1,267 +1,45 @@
-[23:59:00] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
-[23:59:01] [main/WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498]
-[23:59:01] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
-[23:59:01] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0]
-[23:59:01] [main/WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498]
-[23:59:01] [main/WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
-[23:59:01] [main/INFO]: Reloading ResourceManager: Default
-[23:59:03] [Worker-Main-13/INFO]: Loaded 7 recipes
-[23:59:03] [Worker-Main-13/INFO]: Loaded 927 advancements
-[23:59:07] [Server thread/INFO]: Starting minecraft server version 1.16.4
-[23:59:07] [Server thread/INFO]: Loading properties
-[23:59:07] [Server thread/INFO]: Default game type: CREATIVE
-[23:59:07] [Server thread/INFO]: Generating keypair
-[23:59:07] [Server thread/INFO]: Starting Minecraft server on *:25565
-[23:59:07] [Server thread/INFO]: Using default channel type
-[23:59:07] [Server thread/INFO]: Preparing level "world"
-[23:59:08] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
-[23:59:10] [Server thread/INFO]: Preparing spawn area: 0%
-[23:59:10] [Server thread/INFO]: Preparing spawn area: 0%
-[23:59:10] [Server thread/INFO]: Preparing spawn area: 0%
-[23:59:10] [Server thread/INFO]: Preparing spawn area: 0%
-[23:59:10] [Server thread/INFO]: Preparing spawn area: 0%
-[23:59:10] [Worker-Main-8/INFO]: Preparing spawn area: 0%
-[23:59:11] [Server thread/INFO]: Preparing spawn area: 51%
-[23:59:13] [User Authenticator #1/INFO]: UUID of player Alanyeung is 3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f
-[23:59:19] [Server thread/INFO]: Time elapsed: 10912 ms
-[23:59:19] [Server thread/INFO]: Done (11.085s)! For help, type "help"
-[23:59:19] [Server thread/INFO]: Alanyeung[/127.0.0.1:64683] logged in with entity id 185 at (21.448910095572355, 97.86813587608954, -7.96489521625683)
-[23:59:19] [Server thread/INFO]: Alanyeung joined the game
-[23:59:21] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2029ms or 40 ticks behind
-[23:59:21] [Server thread/INFO]: Kicked Alanyeung: Alanyeung BYE~
-[23:59:21] [Server thread/INFO]: Alanyeung lost connection: Alanyeung BYE~
-[23:59:21] [Server thread/INFO]: Alanyeung left the game
-[23:59:21] [Server thread/INFO]: Kicked Alanyeung: Alanyeung BYE~
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:21] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/INFO]: No player was found
-[23:59:22] [Server thread/WARN]: handleDisconnection() called twice
-[23:59:34] [User Authenticator #2/INFO]: UUID of player Alanyeung is 3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f
-[23:59:34] [Server thread/INFO]: Alanyeung[/127.0.0.1:58830] logged in with entity id 198 at (21.448910095572355, 97.86813587608954, -7.96489521625683)
-[23:59:34] [Server thread/INFO]: Alanyeung joined the game
-[23:59:34] [Server thread/INFO]: Kicked Alanyeung: Alanyeung BYE~
-[23:59:34] [Server thread/INFO]: Kicked Alanyeung: Alanyeung BYE~
-[23:59:35] [Server thread/INFO]: Alanyeung lost connection: Alanyeung BYE~
-[23:59:35] [Server thread/INFO]: Alanyeung left the game
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:35] [Server thread/INFO]: No player was found
-[23:59:43] [Server thread/INFO]: Stopping the server
-[23:59:43] [Server thread/INFO]: Stopping server
-[23:59:43] [Server thread/INFO]: Saving players
-[23:59:43] [Server thread/INFO]: Saving worlds
-[23:59:43] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld
-[23:59:44] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
-[23:59:44] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_nether
-[23:59:44] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
-[23:59:44] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_end
-[23:59:44] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved
-[23:59:44] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
-[23:59:44] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
-[23:59:44] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved
+[19:37:48] [main/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
+[19:37:49] [main/WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498]
+[19:37:49] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
+[19:37:49] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0]
+[19:37:49] [main/WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498]
+[19:37:49] [main/WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
+[19:37:49] [main/INFO]: Reloading ResourceManager: Default
+[19:37:51] [Worker-Main-12/INFO]: Loaded 7 recipes
+[19:37:51] [Worker-Main-12/INFO]: Loaded 927 advancements
+[19:37:55] [Server thread/INFO]: Starting minecraft server version 1.16.4
+[19:37:55] [Server thread/INFO]: Loading properties
+[19:37:55] [Server thread/INFO]: Default game type: CREATIVE
+[19:37:55] [Server thread/INFO]: Generating keypair
+[19:37:56] [Server thread/INFO]: Starting Minecraft server on *:25565
+[19:37:56] [Server thread/INFO]: Using default channel type
+[19:37:56] [Server thread/INFO]: Preparing level "world"
+[19:37:56] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
+[19:37:59] [Server thread/INFO]: Preparing spawn area: 0%
+[19:37:59] [Server thread/INFO]: Preparing spawn area: 0%
+[19:37:59] [Server thread/INFO]: Preparing spawn area: 0%
+[19:37:59] [Server thread/INFO]: Preparing spawn area: 0%
+[19:37:59] [Server thread/INFO]: Preparing spawn area: 0%
+[19:37:59] [Server thread/INFO]: Preparing spawn area: 0%
+[19:37:59] [Server thread/INFO]: Preparing spawn area: 0%
+[19:38:00] [Server thread/INFO]: Preparing spawn area: 2%
+[19:38:00] [Server thread/INFO]: Preparing spawn area: 98%
+[19:38:07] [Server thread/INFO]: Time elapsed: 10746 ms
+[19:38:07] [Server thread/INFO]: Done (10.976s)! For help, type "help"
+[19:38:13] [User Authenticator #1/INFO]: UUID of player Alanyeung is 3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f
+[19:38:13] [Server thread/INFO]: Alanyeung[/127.0.0.1:57730] logged in with entity id 236 at (37.49792217994828, 78.46557030936223, 18.210075527457793)
+[19:38:13] [Server thread/INFO]: Alanyeung joined the game
+[19:38:21] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2003ms or 40 ticks behind
+[19:38:23] [Server thread/INFO]: Stopping the server
+[19:38:23] [Server thread/INFO]: Stopping server
+[19:38:23] [Server thread/INFO]: Saving players
+[19:38:23] [Server thread/INFO]: Saving worlds
+[19:38:23] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld
+[19:38:26] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
+[19:38:26] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_nether
+[19:38:26] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
+[19:38:26] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_end
+[19:38:26] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved
+[19:38:26] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
+[19:38:26] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
+[19:38:26] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved

+ 1 - 1
server/server.properties

@@ -1,5 +1,5 @@
 #Minecraft server properties
-#Sun Dec 13 23:59:00 PST 2020
+#Tue Dec 15 19:37:48 PST 2020
 enable-jmx-monitoring=false
 rcon.port=25575
 level-seed=

+ 1 - 1
server/usercache.json

@@ -1 +1 @@
-[{"name":"Alanyeung","uuid":"3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f","expiresOn":"2021-01-13 23:59:34 -0800"}]
+[{"name":"Alanyeung","uuid":"3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f","expiresOn":"2021-01-15 19:38:13 -0800"}]

二进制
server/world/DIM-1/data/raids.dat


二进制
server/world/DIM1/data/raids_end.dat


+ 390 - 30
server/world/advancements/3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f.json

@@ -1,49 +1,173 @@
 {
-  "minecraft:recipes/decorations/campfire": {
+  "minecraft:recipes/building_blocks/pink_concrete_powder": {
     "criteria": {
-      "has_stick": "2020-12-13 13:09:33 -0800"
+      "has_gravel": "2020-12-15 19:30:55 -0800"
     },
     "done": true
   },
-  "minecraft:recipes/misc/charcoal": {
+  "minecraft:recipes/building_blocks/red_concrete_powder": {
     "criteria": {
-      "has_log": "2020-12-13 13:09:37 -0800"
+      "has_gravel": "2020-12-15 19:30:55 -0800"
     },
     "done": true
   },
-  "minecraft:recipes/combat/wooden_sword": {
+  "minecraft:recipes/redstone/tnt": {
+    "criteria": {
+      "has_gunpowder": "2020-12-13 23:07:46 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/tools/wooden_axe": {
     "criteria": {
       "has_stick": "2020-12-13 13:09:33 -0800"
     },
     "done": true
   },
-  "minecraft:recipes/tools/wooden_pickaxe": {
+  "minecraft:recipes/redstone/lever": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/purple_concrete_powder": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/cobblestone_stairs_from_cobblestone_stonecutting": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/tools/compass": {
+    "criteria": {
+      "has_redstone": "2020-12-15 19:31:32 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/magenta_concrete_powder": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/andesite_stairs_from_andesite_stonecutting": {
+    "criteria": {
+      "has_andesite": "2020-12-15 19:31:29 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/decorations/diorite_wall_from_diorite_stonecutting": {
+    "criteria": {
+      "has_diorite": "2020-12-15 19:29:35 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/decorations/diorite_wall": {
+    "criteria": {
+      "has_diorite": "2020-12-15 19:29:35 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/polished_andesite_stairs_from_andesite_stonecutting": {
+    "criteria": {
+      "has_andesite": "2020-12-15 19:31:29 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/lime_concrete_powder": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/stone": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:story/mine_stone": {
+    "criteria": {
+      "get_stone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/polished_andesite": {
+    "criteria": {
+      "has_stone": "2020-12-15 19:31:29 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/redstone/target": {
+    "criteria": {
+      "has_redstone": "2020-12-15 19:31:32 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/diorite_stairs_from_diorite_stonecutting": {
+    "criteria": {
+      "has_diorite": "2020-12-15 19:29:35 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/decorations/furnace": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/yellow_concrete_powder": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
+  },
+  "minecraft:adventure/adventuring_time": {
+    "criteria": {
+      "minecraft:forest": "2020-12-13 01:08:54 -0800",
+      "minecraft:mountains": "2020-12-13 23:30:35 -0800",
+      "minecraft:taiga": "2020-12-13 23:29:25 -0800",
+      "minecraft:river": "2020-12-13 12:44:02 -0800",
+      "minecraft:wooded_hills": "2020-12-13 23:30:54 -0800"
+    },
+    "done": false
+  },
+  "minecraft:recipes/decorations/campfire": {
     "criteria": {
       "has_stick": "2020-12-13 13:09:33 -0800"
     },
     "done": true
   },
-  "minecraft:recipes/building_blocks/oak_planks": {
+  "minecraft:recipes/misc/charcoal": {
     "criteria": {
-      "has_logs": "2020-12-13 13:09:37 -0800"
+      "has_log": "2020-12-13 13:09:37 -0800"
     },
     "done": true
   },
-  "minecraft:recipes/redstone/tnt": {
+  "minecraft:recipes/building_blocks/andesite_stairs": {
     "criteria": {
-      "has_gunpowder": "2020-12-13 23:07:46 -0800"
+      "has_andesite": "2020-12-15 19:31:29 -0800"
     },
     "done": true
   },
-  "minecraft:recipes/tools/wooden_axe": {
+  "minecraft:recipes/tools/wooden_pickaxe": {
     "criteria": {
       "has_stick": "2020-12-13 13:09:33 -0800"
     },
     "done": true
   },
-  "minecraft:recipes/transportation/dark_oak_boat": {
+  "minecraft:recipes/building_blocks/diorite_slab_from_diorite_stonecutting": {
     "criteria": {
-      "in_water": "2020-12-13 12:44:02 -0800"
+      "has_diorite": "2020-12-15 19:29:35 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/cobblestone_slab_from_cobblestone_stonecutting": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
     },
     "done": true
   },
@@ -53,21 +177,57 @@
     },
     "done": true
   },
+  "minecraft:recipes/redstone/redstone_torch": {
+    "criteria": {
+      "has_redstone": "2020-12-15 19:31:32 -0800"
+    },
+    "done": true
+  },
   "minecraft:recipes/transportation/birch_boat": {
     "criteria": {
       "in_water": "2020-12-13 12:44:02 -0800"
     },
     "done": true
   },
+  "minecraft:recipes/decorations/chest": {
+    "criteria": {
+      "has_lots_of_items": "2020-12-15 19:31:29 -0800"
+    },
+    "done": true
+  },
   "minecraft:end/elytra": {
     "criteria": {
       "elytra": "2020-12-13 23:30:24 -0800"
     },
     "done": true
   },
-  "minecraft:recipes/building_blocks/oak_wood": {
+  "minecraft:recipes/building_blocks/brown_concrete_powder": {
     "criteria": {
-      "has_log": "2020-12-13 13:09:37 -0800"
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/combat/stone_sword": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/decorations/cobblestone_wall": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/polished_andesite_slab_from_andesite_stonecutting": {
+    "criteria": {
+      "has_andesite": "2020-12-15 19:31:29 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/green_concrete_powder": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
     },
     "done": true
   },
@@ -77,12 +237,204 @@
     },
     "done": true
   },
+  "minecraft:recipes/building_blocks/polished_andesite_from_andesite_stonecutting": {
+    "criteria": {
+      "has_andesite": "2020-12-15 19:31:29 -0800"
+    },
+    "done": true
+  },
   "minecraft:recipes/transportation/acacia_boat": {
     "criteria": {
       "in_water": "2020-12-13 12:44:02 -0800"
     },
     "done": true
   },
+  "minecraft:recipes/tools/stone_pickaxe": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/andesite_slab_from_andesite_stonecutting": {
+    "criteria": {
+      "has_andesite": "2020-12-15 19:31:29 -0800"
+    },
+    "done": true
+  },
+  "minecraft:adventure/root": {
+    "criteria": {
+      "killed_by_something": "2020-12-13 12:35:32 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/transportation/jungle_boat": {
+    "criteria": {
+      "in_water": "2020-12-13 12:44:02 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/transportation/spruce_boat": {
+    "criteria": {
+      "in_water": "2020-12-13 12:44:02 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/decorations/cobblestone_wall_from_cobblestone_stonecutting": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/combat/wooden_sword": {
+    "criteria": {
+      "has_stick": "2020-12-13 13:09:33 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/white_concrete_powder": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/tools/stone_shovel": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/oak_planks": {
+    "criteria": {
+      "has_logs": "2020-12-13 13:09:37 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/blue_concrete_powder": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/tools/stone_hoe": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/tools/clock": {
+    "criteria": {
+      "has_redstone": "2020-12-15 19:31:32 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/transportation/dark_oak_boat": {
+    "criteria": {
+      "in_water": "2020-12-13 12:44:02 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/gray_concrete_powder": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/diorite_stairs": {
+    "criteria": {
+      "has_diorite": "2020-12-15 19:29:35 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/decorations/andesite_wall_from_andesite_stonecutting": {
+    "criteria": {
+      "has_andesite": "2020-12-15 19:31:29 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/redstone/redstone_block": {
+    "criteria": {
+      "has_redstone": "2020-12-15 19:31:32 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/tools/wooden_hoe": {
+    "criteria": {
+      "has_stick": "2020-12-13 13:09:33 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/andesite": {
+    "criteria": {
+      "has_stone": "2020-12-15 19:29:35 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/redstone/piston": {
+    "criteria": {
+      "has_redstone": "2020-12-15 19:31:32 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/cobblestone_slab": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/diorite_slab": {
+    "criteria": {
+      "has_diorite": "2020-12-15 19:29:35 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/cobblestone_stairs": {
+    "criteria": {
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/black_concrete_powder": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/coarse_dirt": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/redstone/note_block": {
+    "criteria": {
+      "has_redstone": "2020-12-15 19:31:32 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/polished_diorite": {
+    "criteria": {
+      "has_stone": "2020-12-15 19:29:35 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/oak_wood": {
+    "criteria": {
+      "has_log": "2020-12-13 13:09:37 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/decorations/andesite_wall": {
+    "criteria": {
+      "has_andesite": "2020-12-15 19:31:29 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/andesite_slab": {
+    "criteria": {
+      "has_andesite": "2020-12-15 19:31:29 -0800"
+    },
+    "done": true
+  },
   "minecraft:recipes/transportation/oak_boat": {
     "criteria": {
       "in_water": "2020-12-13 12:44:02 -0800"
@@ -101,39 +453,47 @@
     },
     "done": true
   },
-  "minecraft:recipes/tools/wooden_hoe": {
+  "minecraft:recipes/redstone/dropper": {
     "criteria": {
-      "has_stick": "2020-12-13 13:09:33 -0800"
+      "has_redstone": "2020-12-15 19:31:32 -0800"
     },
     "done": true
   },
-  "minecraft:adventure/root": {
+  "minecraft:recipes/building_blocks/light_gray_concrete_powder": {
     "criteria": {
-      "killed_by_something": "2020-12-13 12:35:32 -0800"
+      "has_gravel": "2020-12-15 19:30:55 -0800"
     },
     "done": true
   },
-  "minecraft:recipes/transportation/jungle_boat": {
+  "minecraft:recipes/building_blocks/light_blue_concrete_powder": {
     "criteria": {
-      "in_water": "2020-12-13 12:44:02 -0800"
+      "has_gravel": "2020-12-15 19:30:55 -0800"
     },
     "done": true
   },
-  "minecraft:recipes/transportation/spruce_boat": {
+  "minecraft:recipes/tools/stone_axe": {
     "criteria": {
-      "in_water": "2020-12-13 12:44:02 -0800"
+      "has_cobblestone": "2020-12-15 19:31:17 -0800"
     },
     "done": true
   },
-  "minecraft:adventure/adventuring_time": {
+  "minecraft:recipes/building_blocks/orange_concrete_powder": {
     "criteria": {
-      "minecraft:forest": "2020-12-13 01:08:54 -0800",
-      "minecraft:mountains": "2020-12-13 23:30:35 -0800",
-      "minecraft:taiga": "2020-12-13 23:29:25 -0800",
-      "minecraft:river": "2020-12-13 12:44:02 -0800",
-      "minecraft:wooded_hills": "2020-12-13 23:30:54 -0800"
+      "has_gravel": "2020-12-15 19:30:55 -0800"
     },
-    "done": false
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/polished_diorite_from_diorite_stonecutting": {
+    "criteria": {
+      "has_diorite": "2020-12-15 19:29:35 -0800"
+    },
+    "done": true
+  },
+  "minecraft:recipes/building_blocks/cyan_concrete_powder": {
+    "criteria": {
+      "has_gravel": "2020-12-15 19:30:55 -0800"
+    },
+    "done": true
   },
   "DataVersion": 2584
 }

二进制
server/world/data/raids.dat


二进制
server/world/level.dat


二进制
server/world/level.dat_old


二进制
server/world/playerdata/3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f.dat


二进制
server/world/playerdata/3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f.dat_old


二进制
server/world/region/r.-1.-1.mca


二进制
server/world/region/r.-1.0.mca


二进制
server/world/region/r.0.-1.mca


二进制
server/world/region/r.0.0.mca


+ 1 - 1
server/world/stats/3d1c0ed1-d4d0-42ae-ac5e-a7557d5a6c4f.json

@@ -1 +1 @@
-{"stats":{"minecraft:mined":{"minecraft:grass":1,"minecraft:grass_block":1,"minecraft:oak_log":20,"minecraft:oak_sapling":1,"minecraft:birch_leaves":4,"minecraft:oak_leaves":37},"minecraft:picked_up":{"minecraft:stick":2,"minecraft:apple":1,"minecraft:creeper_spawn_egg":64,"minecraft:oak_log":23,"minecraft:gunpowder":7,"minecraft:oak_sapling":9,"minecraft:dirt":110},"minecraft:custom":{"minecraft:time_since_rest":3133,"minecraft:play_one_minute":16498,"minecraft:damage_taken":1525,"minecraft:sprint_one_cm":15363,"minecraft:deaths":6,"minecraft:walk_one_cm":33130,"minecraft:sneak_time":54,"minecraft:walk_under_water_one_cm":384,"minecraft:aviate_one_cm":131205,"minecraft:jump":160,"minecraft:damage_dealt":48,"minecraft:leave_game":13,"minecraft:time_since_death":3099,"minecraft:walk_on_water_one_cm":885,"minecraft:fall_one_cm":7378,"minecraft:fly_one_cm":20475},"minecraft:killed_by":{"minecraft:creeper":2,"minecraft:wolf":2},"minecraft:used":{"minecraft:creeper_spawn_egg":23,"minecraft:oak_log":94,"minecraft:oak_sapling":2}},"DataVersion":2584}
+{"stats":{"minecraft:mined":{"minecraft:grass":1,"minecraft:grass_block":1,"minecraft:oak_log":20,"minecraft:oak_sapling":1,"minecraft:birch_leaves":4,"minecraft:oak_leaves":37},"minecraft:picked_up":{"minecraft:stick":3,"minecraft:apple":1,"minecraft:andesite":7,"minecraft:creeper_spawn_egg":64,"minecraft:gravel":10,"minecraft:oak_log":24,"minecraft:diorite":2,"minecraft:gunpowder":7,"minecraft:oak_sapling":13,"minecraft:redstone":9,"minecraft:dirt":167,"minecraft:cobblestone":91},"minecraft:custom":{"minecraft:time_since_rest":9388,"minecraft:play_one_minute":22753,"minecraft:crouch_one_cm":104,"minecraft:damage_taken":1525,"minecraft:sprint_one_cm":16087,"minecraft:walk_one_cm":38621,"minecraft:deaths":6,"minecraft:walk_under_water_one_cm":3758,"minecraft:sneak_time":170,"minecraft:aviate_one_cm":131205,"minecraft:jump":177,"minecraft:damage_dealt":48,"minecraft:leave_game":17,"minecraft:time_since_death":9354,"minecraft:walk_on_water_one_cm":4661,"minecraft:fall_one_cm":7378,"minecraft:fly_one_cm":49285},"minecraft:killed_by":{"minecraft:creeper":2,"minecraft:wolf":2},"minecraft:used":{"minecraft:creeper_spawn_egg":23,"minecraft:oak_log":94,"minecraft:lever":7,"minecraft:tnt":275,"minecraft:oak_sapling":2}},"DataVersion":2584}

+ 17 - 15
web.go

@@ -25,21 +25,23 @@ func webServer(Dir string, Port string) {
 	http.HandleFunc("/properties", ReadProperties)
 	http.HandleFunc("/whitelist", ReadWhitelist)
 
-	//EDIT
-	http.HandleFunc("/eula/change", ChangeEULA)
-	http.HandleFunc("/properties/change", ChangeProperties)
-
-	//ADD
-	http.HandleFunc("/ban-ip/add", AddBanIP)
-	http.HandleFunc("/ban-player/add", AddBanPlayer)
-	http.HandleFunc("/ops/add", AddOps)
-	http.HandleFunc("/whitelist/add", AddWhitelist)
-
-	//REMOVE
-	http.HandleFunc("/ban-ip/remove", RemoveBanIP)
-	http.HandleFunc("/ban-player/remove", RemoveBanPlayer)
-	http.HandleFunc("/ops/remove", RemoveOps)
-	http.HandleFunc("/whitelist/remove", RemoveWhitelist)
+	/*
+		//EDIT
+		http.HandleFunc("/eula/change", ChangeEULA)
+		http.HandleFunc("/properties/change", ChangeProperties)
+
+		//ADD
+		http.HandleFunc("/ban-ip/add", AddBanIP)
+		http.HandleFunc("/ban-player/add", AddBanPlayer)
+		http.HandleFunc("/ops/add", AddOps)
+		http.HandleFunc("/whitelist/add", AddWhitelist)
+
+		//REMOVE
+		http.HandleFunc("/ban-ip/remove", RemoveBanIP)
+		http.HandleFunc("/ban-player/remove", RemoveBanPlayer)
+		http.HandleFunc("/ops/remove", RemoveOps)
+		http.HandleFunc("/whitelist/remove", RemoveWhitelist)
+	*/
 
 	err := http.ListenAndServe(":"+Port, nil)
 	if err != nil {