df-mc / dragonfly Goto Github PK
View Code? Open in Web Editor NEWMinecraft Bedrock Edition server software written in Go
Home Page: https://discord.gg/U4kFWHhTNR
License: MIT License
Minecraft Bedrock Edition server software written in Go
Home Page: https://discord.gg/U4kFWHhTNR
License: MIT License
Double chests
This shouldn't be difficult at all, a struct for capes already exists, we just have to parse cape data from the player's client data and manage it like with skins.
The tall grass block is a bit of a mess. The awkward fusion of blocks that can have a double block version and can't just does not work and is rather confusing. This should probably be split up into a couple of other types.
Currently Dragonfly only accepts Logrus loggers for logging. This isn't ideal for obvious reasons. We should probably have a logger interface somewhere and accept any value that implements it.
Right now, entity saving is still a TODO. Would probably work to have an EncodeNBT method for entities or something along those lines.
Having one command usage with an optional argument and one without that argument will always cause one of the two to be executed. What should happen here? Make sure to document whatever behavior we decide on.
Currently the world spawn isn't sent to the player after its initial spawn. The spawn position should be updated on world change and when the position of the world that the player is in is changed.
When letting a block, like sand, fall and punching the falling block entity while it falls, the server kicks you with the message:
DEBU[1341] failed processing packet from xx.xxx.xxx.xxx:xxxxx (Sandertv): *packet.InventoryTransaction: invalid entity interaction: no entity found with runtime ID 13
It seems to be unable to find the entity that was spawned even though it should be present.
This will be needed for entity saving (#143) and possibly for other things. Not too sure how this should look, but it should be put in the world package.
cmd.Allower does not currently influence what commands are sent to the player and which are not. This is an issue for permission systems and should be improved.
Skin changes are currently not handled, so changing skin in-game won't allow other people to see it. *packet.PlayerSkin
should have a handler to handle skin changes.
Skin changing should probably have a HandleSkinChange(old, new)
method in the player.Handler
so that people can listen for skin changes.
One thing to consider is that skin changes should be propagated to all players. We could either send the new skin to all connected sessions, or we could send a *packet.PlayerSkin
only to viewers of the player that changes skin and always send a *packet.PlayerSkin
when a player sees another player after it entering the view distance.
The world neither loads nor close successfully.
Not sure if this is an issue with macOS or this will also happen to other operating systems.
go run main.go
DragonFly: v0.0.5 (e073ce8)
Operating system: macOS Big Sur 11.4
Minecraft Bedrock Edition: 1.16.221 (Protocol 431)
[Network]
Address = ":19132"
[Server]
AuthEnabled = true
JoinMessage = "%v has joined the game"
MaximumPlayers = 0
Name = "Dragonfly Server"
QuitMessage = "%v has left the game"
ShutdownMessage = "Server closed."
[World]
Folder = "world"
MaximumChunkRadius = 32
Name = "World"
SimulationDistance = 8
https://github.com/df-mc/dragonfly/files/6585096/world.zip
(Also tried deleting the world and generate a new one, but the issue still occurs)
World height (and depth) is currently hardcoded in a large amount of places throughout the codebase. We should make all these places use constants so that we can make an easy transition in the event of a world height (or depth) change.
Rarely, chunks will not be loaded or sent to the client properly. A way to reproduce it sometimes seems to be by setting your view distance to the max first, letting chunks load, then setting it to the minimum and setting it back to the maximum again. Chunks will fail to load sometimes. It seems more complicated chunks (more (different?) blocks) have this issue more often, but that has not yet been confirmed.
Chunk serialisation is quite a mess at the moment. This should be improved both for performance reasons and readability.
The sign implementation at feature/signs requires some minor changes to the way the rotation + wall/standing is structured. With some other small changes this should be ready to be merged into master.
(As discussed in the discord)
When teleporting a player multiple times per second, not all teleports seem to work. The player 'lags behind' where it actually should be, or they get teleported back somehow. This seems to happen to players with high ping.
When chunks are generated, the mutex protecting the chunk map is locked for the entire duration. This is rather inefficient as the chunks map does not need to be protected for that duration and slow generation code will hog access to the map.
Goroutine 1
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.chanrecv (/usr/local/go/src/runtime/chan.go:576)
runtime.chanrecv2 (/usr/local/go/src/runtime/chan.go:444)
github.com/df-mc/dragonfly/server.(*Server).Accept (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/server.go:103)
main.main (/Users/Eurus/Documents/Development/DragonFly/ZSMC-df/main.go:41)
runtime.main (/usr/local/go/src/runtime/proc.go:225)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: runtime.rt0_go (/usr/local/go/src/runtime/asm_amd64.s:226)
Goroutine 2
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.goparkunlock (/usr/local/go/src/runtime/proc.go:342)
runtime.forcegchelper (/usr/local/go/src/runtime/proc.go:276)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: runtime.init.6 (/usr/local/go/src/runtime/proc.go:264)
Goroutine 3
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.gcBgMarkWorker (/usr/local/go/src/runtime/mgc.go:1911)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: runtime.gcBgMarkStartWorkers (/usr/local/go/src/runtime/mgc.go:1835)
Goroutine 4
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/sandertv/gophertunnel/minecraft.(*Listener).listen.func1 (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/listener.go:177)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/sandertv/gophertunnel/minecraft.(*Listener).listen (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/listener.go:173)
Goroutine 5
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.chanrecv (/usr/local/go/src/runtime/chan.go:576)
runtime.chanrecv2 (/usr/local/go/src/runtime/chan.go:444)
github.com/sandertv/gophertunnel/minecraft.newConn.func1 (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/conn.go:155)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/sandertv/gophertunnel/minecraft.newConn (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/conn.go:152)
Goroutine 6
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/sandertv/go-raknet.(*Conn).ReadPacket (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/conn.go:282)
github.com/sandertv/gophertunnel/minecraft/protocol/packet.(*Decoder).Decode (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/protocol/packet/decoder.go:82)
github.com/sandertv/gophertunnel/minecraft.(*Listener).handleConn (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/listener.go:243)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/sandertv/gophertunnel/minecraft.(*Listener).createConn (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/listener.go:220)
Goroutine 8
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/df-mc/dragonfly/server/session.(*Session).sendChunks (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/session/session.go:249)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/dragonfly/server/session.(*Session).handlePackets (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/session/session.go:228)
Goroutine 18
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.goparkunlock (/usr/local/go/src/runtime/proc.go:342)
runtime.bgsweep (/usr/local/go/src/runtime/mgcsweep.go:182)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: runtime.gcenable (/usr/local/go/src/runtime/mgc.go:217)
Goroutine 19
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.goparkunlock (/usr/local/go/src/runtime/proc.go:342)
runtime.bgscavenge (/usr/local/go/src/runtime/mgcscavenge.go:314)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: runtime.gcenable (/usr/local/go/src/runtime/mgc.go:218)
Goroutine 20
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.gcBgMarkWorker (/usr/local/go/src/runtime/mgc.go:1911)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: runtime.gcBgMarkStartWorkers (/usr/local/go/src/runtime/mgc.go:1835)
Goroutine 21
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.gcBgMarkWorker (/usr/local/go/src/runtime/mgc.go:1911)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: runtime.gcBgMarkStartWorkers (/usr/local/go/src/runtime/mgc.go:1835)
Goroutine 22
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/df-mc/dragonfly/server/world.(*World).startTicking (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/world/world.go:1093)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/dragonfly/server/world.New (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/world/world.go:102)
Goroutine 23
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/df-mc/dragonfly/server/world.(*World).chunkCacheJanitor (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/world/world.go:1782)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/dragonfly/server/world.New (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/world/world.go:103)
Goroutine 24
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
runtime.ensureSigM.func1 (/usr/local/go/src/runtime/signal_unix.go:889)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: runtime.ensureSigM (/usr/local/go/src/runtime/signal_unix.go:872)
Goroutine 25
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/df-mc/goleveldb/leveldb.(*DB).compactionError (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/db_compaction.go:91)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/goleveldb/leveldb.openDB (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/db.go:148)
Goroutine 26
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/df-mc/goleveldb/leveldb.(*DB).mpoolDrain (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/db_state.go:101)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/goleveldb/leveldb.openDB (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/db.go:149)
Goroutine 27
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/df-mc/goleveldb/leveldb.(*DB).tCompaction (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/db_compaction.go:836)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/goleveldb/leveldb.openDB (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/db.go:155)
Goroutine 28
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/df-mc/goleveldb/leveldb.(*DB).mCompaction (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/db_compaction.go:773)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/goleveldb/leveldb.openDB (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/db.go:156)
Goroutine 29
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.netpollblock (/usr/local/go/src/runtime/netpoll.go:438)
internal/poll.runtime_pollWait (/usr/local/go/src/runtime/netpoll.go:222)
internal/poll.(*pollDesc).wait (/usr/local/go/src/internal/poll/fd_poll_runtime.go:87)
internal/poll.(*pollDesc).waitRead (/usr/local/go/src/internal/poll/fd_poll_runtime.go:92)
internal/poll.(*FD).ReadFrom (/usr/local/go/src/internal/poll/fd_unix.go:222)
net.(*netFD).readFrom (/usr/local/go/src/net/fd_posix.go:61)
net.(*UDPConn).readFrom (/usr/local/go/src/net/udpsock_posix.go:47)
net.(*UDPConn).ReadFrom (/usr/local/go/src/net/udpsock.go:118)
github.com/sandertv/go-raknet.(*Listener).listen (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/listener.go:141)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/sandertv/go-raknet.ListenConfig.Listen (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/listener.go:76)
Goroutine 30
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.chanrecv (/usr/local/go/src/runtime/chan.go:576)
runtime.chanrecv2 (/usr/local/go/src/runtime/chan.go:444)
github.com/sandertv/go-raknet.(*Listener).Accept (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/listener.go:95)
github.com/sandertv/gophertunnel/minecraft.(*Listener).listen (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/listener.go:191)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/sandertv/gophertunnel/minecraft.ListenConfig.Listen (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/listener.go:108)
Goroutine 31
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.chanrecv (/usr/local/go/src/runtime/chan.go:576)
runtime.chanrecv2 (/usr/local/go/src/runtime/chan.go:444)
github.com/sandertv/gophertunnel/minecraft.(*Listener).Accept (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/listener.go:128)
github.com/df-mc/dragonfly/server.(*Server).run (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/server.go:332)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/dragonfly/server.(*Server).Start (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/server.go:155)
Goroutine 34
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.goparkunlock (/usr/local/go/src/runtime/proc.go:342)
runtime.runfinq (/usr/local/go/src/runtime/mfinal.go:175)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: runtime.createfing (/usr/local/go/src/runtime/mfinal.go:156)
Goroutine 35
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.gcBgMarkWorker (/usr/local/go/src/runtime/mgc.go:1911)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: runtime.gcBgMarkStartWorkers (/usr/local/go/src/runtime/mgc.go:1835)
Goroutine 36
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/sandertv/go-raknet.(*Conn).startTicking (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/conn.go:125)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/sandertv/go-raknet.newConn (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/conn.go:113)
Goroutine 38
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/sandertv/gophertunnel/minecraft.(*Conn).ReadPacket (/Users/Eurus/go/pkg/mod/github.com/sandertv/[email protected]/minecraft/conn.go:335)
github.com/df-mc/dragonfly/server/session.(*Session).handlePackets (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/session/session.go:230)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/dragonfly/server/session.(*Session).Start (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/session/session.go:147)
Goroutine 50
runtime.asmcgocall (/usr/local/go/src/runtime/asm_amd64.s:653)
runtime.libcCall (/usr/local/go/src/runtime/sys_libc.go:48)
runtime.read (:0)
runtime.sigNoteSleep (/usr/local/go/src/runtime/os_darwin.go:120)
os/signal.signal_recv (/usr/local/go/src/runtime/sigqueue.go:165)
os/signal.loop (/usr/local/go/src/os/signal/signal_unix.go:23)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: os/signal.Notify.func1.1 (/usr/local/go/src/os/signal/signal.go:151)
Goroutine 51
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.chanrecv (/usr/local/go/src/runtime/chan.go:576)
runtime.chanrecv1 (/usr/local/go/src/runtime/chan.go:439)
github.com/df-mc/dragonfly/server.(*Server).CloseOnProgramEnd.func1 (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/server.go:295)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/dragonfly/server.(*Server).CloseOnProgramEnd (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/server/server.go:294)
Goroutine 52
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/df-mc/goleveldb/leveldb/util.(*BufferPool).drain (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/util/buffer_pool.go:206)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/goleveldb/leveldb/util.NewBufferPool (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/util/buffer_pool.go:237)
Goroutine 53
runtime.gopark (/usr/local/go/src/runtime/proc.go:337)
runtime.selectgo (/usr/local/go/src/runtime/select.go:327)
github.com/df-mc/goleveldb/leveldb.(*session).refLoop (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/session_util.go:189)
runtime.goexit (/usr/local/go/src/runtime/asm_amd64.s:1371)
created at: github.com/df-mc/goleveldb/leveldb.newSession (/Users/Eurus/go/pkg/mod/github.com/df-mc/[email protected]/leveldb/session.go:93)
At the moment, there is no floating text in dragonfly. Since a lot of servers use these, it would be a great addition for dragonfly to have built-in support for these somewhere in the future!
Under some circumstances, chunks seem not to be saved properly, causing them to be regenerated after being edited.
Attempting to break blocks in survival mode with a tool in hand is not handled correctly by the server. The error message *packet.PlayerAuthInput: unknown value '9' for enum type 'stack request action type'
is shown.
Lightning has traditionally been an entity, but it would probably be better if there was a simple method to strike lightning in a world. Something like (*world.World).StrikeLightning(pos)
might work.
After commit c42fbe9, the server consistently freezes on shutdown after the message Saving chunks in memory to disk
. This has to be resolved in one way or another before release.
There's no projectile on DF for the moment and.. for servers like mine where pvp is based on splashing potions we're kind of stuck and can't really release my server.
The README has out of date information on it and doesn't look very appealing to new visitors. It should probably also have the "Chat on Discord" button higher up so people see the button more quickly.
Currently blocks that can have vegetation (grass, dirt) are hardcoded. If we add an interface with a method like such:
type <SomeNameForBlocksThatServeAsSoilForVegetation> interface {
SoilFor(b world.Block) bool
}
this is more flexible for new blocks and allows us to implement the same interface for blocks that can have different blocks they can be planted on, such as nether roots and mushrooms.
Commands currently cannot be updated during runtime. Having some system that could do this would make commands much more useful. This would also include enum updating. One way to do this might be to periodically do updates where needed: Have a ticker and build the available commands packet every time. Compare vs the last available commands packet, and check if there were changes. If so, send the updated packet.
Please create normal world generation.
Hi, I found an issue with the player transfer function.
What I expect is: the player get transferred to the server I want (which in this case is nozzle.wtf:19132)
What actually happened: The transfer function closes player's session which disconnects the player with the message:
I tried removing the close function and everything was working! so I think we should either remove this function in the transfer or just find another way to close the session of the player without preventing the player from being transferred
The 1.17 update introduces raw iron and gold you get from mining the respective ores. Currently these ores drop themselves as per the old functionality.
Implementing the Consumable and UseOnBlock interface causes the UseBlockOn to not place the block.
If the consumable item is used on a block it also doesn't stop consuming the item
Hi, I think I just found a bug, I don't know if it only happends when you die of fall damages but it happends. Here's a video that shows the bug: https://youtu.be/bNJVRKGEvDk
Light is currently calculated on chunk load, but never after that. With a more flexible implementation of light calculation, we should be able to do light updates relatively easily.
DEBU[0092] failed processing packet from
x.x.x.x:55750 (Endermanbugzjfc): *packet.InventoryTransaction: unhandled inventory transaction type *protocol.MismatchTransactionData
Run player.Player.Inventory().SetItem()
right after server.Server.Accept()
Currently, we only have a API for enchants and a protection enchant with no functionality.
ok
Right now there isn't any crafting which is a part of the game minecraft which is pretty problematic
cmd/blockhash
currently generates the hash.go file in a completely random order by simply iterating over the created map. This causes every commit implementing a new block to have a massive diff and often results in merge conflicts when two people implement different blocks at the same time. Sorting these hashes alphabetically by the types' names should resolve this issue.
Players can not view others sneaking.
When I fall down, my player does not take fall damge. However, once I move the player around the fall damage does apply.
It seems like this issue occurs after switching from creative mode to survival mode
Steps to reproduce
These are the exact steps I followed in order to get this issue:
Version
This was tested on the latest commit at this time ( a52f18e )
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.