Commit Graph

106 Commits

Author SHA1 Message Date
Alexander Medvedev
7bff068dff fix: discord links 2026-06-09 16:49:32 +02:00
Alexander Medvedev
8c4fa99470 feat: add rudimentary .pump format
also this should fix a dead lock
2026-04-30 09:05:40 +02:00
Alexander Medvedev
9012a92287 feat(plugin-api): add support for plugin dependencies 2026-04-15 16:47:08 +02:00
Alexander Medvedev
1e196cfe34 fix: arrows not damage non living entities 2026-04-07 14:04:41 +02:00
Alexander Medvedev
1cf5ac603c replace discord link with https://discord.gg/pumpkinmc 2026-02-09 19:32:34 +01:00
Alexander Medvedev
05688ade9e fix: structure connection through chunks
still needs a bit more work, also changed the license,
2026-02-01 23:03:15 +01:00
Alexander Medvedev
2abb33c2ab README: link to some tracking issues 2026-01-29 11:36:08 +01:00
Alexander Medvedev
142296a9b2 feat: 1.21.9-1.21.11 support
more versions will come
2026-01-22 17:16:37 +01:00
Alexander Medvedev
20a14d730b feat: building wither 2026-01-20 22:47:22 +01:00
Alexander Medvedev
a44a5babe3 feat: partially implement Stronghold
also fixed some bugs
2026-01-10 17:56:25 +01:00
Alexander Medvedev
42c903493a port to 1.21.11 2025-12-24 13:09:01 +01:00
Alexander Medvedev
0ce5471761 Overhaul registry loading
Registry data is now loaded dynamically for automatic future-proofing, ending the need for manual struct updates. Access to specific values now requires explicit data lookups.
2025-11-18 19:00:18 +01:00
Alexander Medvedev
58583da4c1 Port to 1.21.9
I did not update density functions because i'm too lazy to refactor a bunch of things because Mojang decided to remove "initial_density_without_jaggedness", but i will in the future
2025-10-02 18:27:10 +02:00
Alexander Medvedev
f0668ec746 readme: check eating as complete 2025-08-20 16:31:07 +02:00
Alexander Medvedev
7e3a1c0972 Fix rust 1.89 warns 2025-08-11 20:45:55 +02:00
Alexander Medvedev
eaf5959f2b Minor Chunk gen speed gains 2025-07-28 12:18:54 +02:00
unschlagbar
2e2236bf3b Bedrock player joining (#1063)
Co-authored-by: unschlagbar <adrian@kuhlmann@gmx.de>
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
Co-authored-by: unschlagbar <adrian@kuhlmann@gmx.de>
2025-07-26 17:31:00 +02:00
Maoyue 貓月
9582e48fd4 docs: fix quick start link (#1053) 2025-07-11 08:42:35 +02:00
Alexander Medvedev
630560e1d8 Update README gif 2025-07-02 10:45:32 +02:00
Alexander Medvedev
c67d4cfd2e Update to 1.21.7 2025-06-30 23:41:23 +02:00
Alexander Medvedev
e0c91b3edc Initial Bedrock support
You can't join the World, But the base is ready
2025-06-29 00:33:44 +02:00
Alexander Medvedev
a31c9ec703 Implement Entity data Saving/Reading 2025-06-25 03:47:05 +02:00
Alexander Medvedev
82948f830e Update to 1.21.6 2025-06-17 19:53:33 +02:00
Alexander Medvedev
c253b0902c fix some CI issues
hopefully...
2025-06-12 20:15:46 +02:00
Alexander Medvedev
fb3792eaf4 Update typos to 1.33 2025-06-05 17:09:29 +02:00
Alexander Medvedev
3e1c9f735c README: check Liquid Physics 2025-04-05 11:55:36 +02:00
Toyo
d36102dc69 Make To-Do more precise (#689)
- Moved "Biomes" to be alongside completed features
- Marked "Commands" and "Redstone" as W.I.P (#15 and redstone is a basic implementation
2025-04-01 07:28:10 +02:00
Alexander Medvedev
d8b726dfe2 Update to 1.21.5 (#665)
* update to 1.21.5

* maybe made something better maybe made something worse

:c does still not work

* some fixes

* fix chunk packet

finally, this took way too much of my life time

* port text component

* fix tests

recipes are broken but we currently don't use them anyway
2025-03-27 21:49:02 +01:00
4lve
eb587c9753 add Partial Redstone functionality (#621)
* Add scheduled block ticks

* Fix typos

* fix scheduled block ticks

* Default to empty vec

* Proper Block Updates

* Basic redstone works LFG!

* add buttons and lamps

* observers

* Only send update packet at end of tick

* hmm

* Start implementing MCHPRS

* redstone connections done

* visual state done

* Begin implementing multi_block_update

* Redstone works partially

* Fix typos

* Think I know what caused the client side desync

* Fix clippy

* Change fluid tick type

* Something is broken

* Don't use RWLock for block_ticks

* fix delay not decrementing

* Remove server from scheduled block ticks

* Fix redstone bug

* fix hardpower

* Fix tick lag

* Fix comperators

* Don't loop every tick

* Fix panic

* Fix redstone not powering block below

* make redstone_wire emit hard power

* Add target block

* fix clippy

* Merge

* merge

* add redstone torches

* Fix tick piorities

* default to air

* fix doors

* Update README.md

---------

Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
2025-03-21 15:37:19 +01:00
Alexander Medvedev
7a15a50030 Generate Biomes (#610)
* Populate biomes

* actually fix multi noise sampler

* actually they are all pass-through

* fix serde error

* prepare things

* implement surface rules

* fix max_y

* fix terrain gen

* make surface rules work

* fix wrong biome coords

* refactor height estimator to its own struct

* implement surface estimation for surface rules

* fix surface gen

* some carve work

* fix conflicts

* more biomes work

* fix biome map

* refactor biome lookups

* add unit tests

* change from_block to from_chunk

* not only lushcaves anymore

* add more unit tests

* add unit test

* fix multi noise

* Update proto_chunk.rs

* fix biome map access

* test badlands impl

* fix badlands

* fix some values

* make it compile

* Fix bug in get_enclosing_parameters (#641)

* add badlands pillar and icebergs

* fix clippy

* fix clippy in test

* Update README.md

---------

Co-authored-by: kralverde <github@email.kralverde.dev>
Co-authored-by: 4lve <72332750+4lve@users.noreply.github.com>
2025-03-19 17:02:52 +01:00
Epix
93510eecd5 Grammar fixes, terminology change (#633)
* Major grammar sweep

* Remove extra backtick

* Use more specific terminology for chunk data storage

* Forgor to cargofmt

* Fix typo "thier"

* Fix typo "clousures"

* Try new terminology

* Forgor to cargofmt

* Use "Subchunks" instead of "Heterogeneous" for ChunkBlocks variant

* Fix variable name

* Forgor to change comment
2025-03-16 10:40:17 +01:00
Alexander Medvedev
aa9de86d4e Update README.md (#614) 2025-03-06 16:35:54 +01:00
Toyo
d827f68826 README: Specify features state (#598)
* Order completed to be up

Make completed features on top and unfinished below

* Group similar features

* Add features and mark if completed

Basically we have:
(W.I.P): The feature is there but is not behaving as intended.
Checkmark: The feature works as intended, it could be improved but it works.
No checkmark: The feature does not exist and will not work nor do anything.

* config is not wip
2025-02-27 16:42:05 +01:00
Alexander Medvedev
8aef30ee13 Make TNT Work (#590)
* make tnt work

* Spawn TNT at right position

* Fix tnt
2025-02-25 16:38:12 +01:00
Alexander Medvedev
995edfb3c2 Add Effects 2025-02-22 14:17:06 +01:00
Toyo
2af2fbbf73 README: Add more to the To-Do (#569)
* Add more to the To-Do

Added biomes, vegetation, player data saving, off hand, advancements, villagers and mobs inventory as objectives in the to-do

* Remove stack limits from the to-do
2025-02-21 09:42:40 +01:00
Alexander Medvedev
2e2fe83720 Add Hunger 2025-02-07 00:22:52 +01:00
Mili
12866bce36 feat: add linear chunk format (#494)
* feat: add linear chunk format with zstd lib dependency

* fixing a typo

* refactor: rename file handling methods for clarity and more lint fixes

* refactor: improve clarity on validation methods

* fix: invert version check in LinearFile header validation

* fix: remove leading dot from file path formatting in LinearChunkFormat

* refactor: improve error handling and method naming in LinearFile operations

* fix: ensure file is flushed after writing in LinearFile operations

* fix: lints and warnings

* fix: more lints

* refactor: streamline LinearFile structure and improve header management

* refactor: change chunks_headers to use Box for improved memory management and use exception to know if file exist

* refactor: update path parameter types to PathBuf for consistency and improved usability

* refactor: update path parameter types to Path avoiding uknown changes and adjust file truncation logic

* fix: avoid using the same path for different tests

* fix: fix some bytes sizes for the header based on the spec

* refactor: enable file truncation when opening for writing and simplify save method

* fix: removing IoSlices for windows issues.

* fix: clippy lints

* refactor: improve incompatible files cheking, some documentation and variable nameing

* feat: add file_format to ChunkConfig and implement format handling in Level

* feat: add error logging for invalid file headers and data size checks in LinearFile and tmp filenames on write

* feat: implement file locking mechanism for concurrent chunk read/write operations

* fix: bug at desserializing the chunks headers.

* Refactor chunk file locking mechanism to use DashMap for improved concurrency and simplify read/write guard management

* docs: Update documentation for LinearVersion enum with format references

* re-check workflows

* re-check lints 2

* rename config values

* Some doc improvements

---------

Co-authored-by: Mili <santiagoogle@hotmail.com>
Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
2025-02-05 22:28:20 +01:00
Alexander Medvedev
484009bb9e Fixed Some typos 2025-02-02 15:12:34 +01:00
Alexander Medvedev
fefcb78e56 Fix reading from invalid level.data
Also use Spawn x and z now !
2025-01-30 15:13:56 +01:00
vyPal
a0ae1ae515 add Plugin system (#339)
* Add pumpkin-api crate for API definitions

* Add proc-macro definitions for pumpkin-api

* Add pumpkin-api and pumpkin-api-macros to workspace

* Add basic PluginManager implementation plugin loading

* Update .gitignore to include specific plugin file types

* Add example plugin

* Cargo fmt

* Fix clippy issues

* Refactoring to prevent a circular import

* Add base impl for plugin hooks

* Move plugin manager to server

* Make metadata have static lifetime

* Add default implementations to events

* Add hooks to proc macro

* Update example

* Fix formatting

* Fix clippy warnings

* Load metadata from Cargo.toml

* Mark plugins as an implemented feature :D

* Implement new event handling

* Create a static global reference to the plugin manager

* Emit player join and leave events

* Update macro generation

* Update example

* Fix formatting

* Fix clippy issue

* Simplify event handling

* Add plugin command to list plugins

* Make handlers async

* Update macros

* Update example

* Fix formatting and clippy issues

* Better styling on plugins command

* Fix clippy issues

* Cargo fmt

* Disable doctest for lib target on pumpkin crate

* New API for plugins

* Update api macros

* Update plugin example

* A bit of clean up

* Some QoL (and performance) improvements

* Cargo fmt and clippy fixes

* refactoring, better event handling, new context functions

* Async on_load and on_unload

* Fix mutex lock never going out of scope

* Async plugin loading

* Add plugin management command

* Fix clippy issues

* Fix import issues

* Move TcpConnection out of client

* Move packet encoding out of client

* Allow plugins to register commands

* Fix fmt and clippy

* Implement plugin list in query

* Make arguments public so that plugins can use them

* Update proc_macros to handle runtime

* Make tree_builder public for use in plugins

* Make FindArg trait public for use in plugins

* Update example plugin

* Fix merge related issues

* Fix cargo fmt

* Post-merge fixes (also 69th commit, nice)

* New event system

* cargo fmt

* Impl block break event

* cargo fmt and clippy

* Reduced plugin size

* Reduce dependency count

* Old code cleanup

* cargo fmt

* Add event priority and blocking options to event registration and handling

* Refactor event handling to support blocking execution and improve event registration

* Fix post-merge errors

* Update example plugin

* increase mpsc channel capacity and handle write errors gracefully

* Use Arc<Player> instead of &Player

* add missing import

* Update example plugin with playing sounds

* Remove example plugin

* Create plugins dir if doesnt exist

* Remove unused vars

* Remove unnecessary clones

* Fix impl

* cargo fmt

* Make server pub in context
2025-01-24 17:26:09 +01:00
Alexander Medvedev
23dbb72bbe rename WorldPosition 2025-01-12 16:45:22 +01:00
Alexander Medvedev
495de3db16 add Anvil Chunk saving (#401)
* anvil saving foundation

* fix: clippy warns

* write chunk header

* write x_pos and z_pos

* cargo: fmt

* maybe improve something, maybe made something worse

* Make anvil work (#465)

* refactored stuff into chaos

* now we got sinkholes

* Reimplemented the whole write logic we now have wierd chunks but the data is mostly correct

* Fixed long overflow

* Fix fmt and clippy

* Added unit test to check anvil saving

* Fix fmt

* Fixed useless clone

* Removed unnecessary unwraps and added timestamp table

* Removed fs2 dependency

* Fix stop deadlock

---------

Co-authored-by: Alvsch <94403567+Alvsch@users.noreply.github.com>

* Update README.md

---------

Co-authored-by: Nico Göbel <147538729+leobeg@users.noreply.github.com>
Co-authored-by: Alvsch <94403567+Alvsch@users.noreply.github.com>
2025-01-07 17:07:35 +01:00
Alexander Medvedev
f2cfad06bd Add Entity AI 2025-01-04 18:37:59 +01:00
Alexander Medvedev
a9a7dcc6b0 Update README.md 2024-12-30 16:39:00 +01:00
Alexander Medvedev
c5c7e897cb Update website and repo links 2024-12-29 12:40:22 +01:00
Kyle Davis
6a5add8de5 Added native operator permission management (#348)
* Starting work on Operator permission system

This commit adds the ops.json configuration found in vanilla
servers, and updates the basic configuration to handle the default
permission level.

Server now uses ops file and defaults players to op level 0

The /op command has been added but needs players to rejoin for now.

* Clippy Fix + need to Rejoin after /op removed

I found the source of the DeadLock. Updated set permission function.

Fix cargo formatting issues and clippy issues.

* Remove temp warn message

* Move OperatorConfig to server

As Snowiii pointed out, OperatorConfig is runtime data.

Revert most changes in pumpkin-config.

op_permission_level must say in the basic configuration for
parity with Minecraft.

* cargo fmt + cargo clippy

* Sync permission change with client

* Fixs issues @Commandcracker found in review

- Move PermissionLvl to core and removed OpLevel
- Move ops.json to /data/ops.json
- Fix permissions issue with /op command
- Shorten /op command description

* refactor into `data` folder

* create data dir when needed

* add to readme

* fix: conflicts

---------

Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
2024-12-27 17:22:19 +01:00
LieOnLion
37372986b0 Fixed Pumpkin website links (#423) 2024-12-27 13:18:43 +01:00
Snowiiii
35afc0bfb9 Port to 1.21.4 2024-12-03 23:34:59 +01:00
Commandcracker
0cc693e4b2 Add Server Links (#307)
* Add Server Links

* Use config phase

---------
2024-11-26 21:28:59 +01:00