Coder Social home page Coder Social logo

quiltservertools / ledger Goto Github PK

View Code? Open in Web Editor NEW
165.0 12.0 41.0 4.89 MB

A server-side logging mod for fabric 1.17+

Home Page: https://www.quiltservertools.net/Ledger/latest/

License: GNU Lesser General Public License v3.0

Java 44.79% Kotlin 55.21%
minecraft fabric

ledger's Introduction

discord

For a much better guide, visit our wiki

Ledger

A world change logging tool for the Fabric modloader.

Ledger can be found on Discord at https://discord.gg/GtwDTTr3pe

Install

Put Ledger in your mods folder along with Fabric API and fabric-language-kotlin. When you launch your server, the config file will be created automatically.

Configuration

Ledger's configuration file is found at config/ledger.toml.

Message theme

Found under [color]

Ledger allows for the customisation of the colors used in the messages sent in game. By default, Ledger uses the blue theme. More themes can be found in the themes file

Search settings

Found under [search]

pageSize [Default: 8] controls the number of actions displayed per page

Database settings

Found under [database]

maxQueueSize [Default: 50] is the number of items logged before writing to the database

queueTimeoutSec [Default: 5] is the maximum amount of time to wait for the queue to fill before writing

Filters

These allow you to control what is and is not logged

Found under [actions]

All listed here are arrays and are formatted like so:

array = []
blocks = ["minecraft:air", "minecraft:dirt"]

typeBlacklist [Default: empty] controls what action types are logged. Hover over the action in a chat message to see the type

worldBlacklist [Default: empty] controls in which dimensions events are logged. Provide

objectBlacklist [Default: empty] controls which objects are logged. These can be item types, block types or entities

sourceBlacklist [Default: empty] controls which sources are logged. Examples are "lava" and "gravity"

Commands

Inspect

/lg inspect - toggles inspect mode /lg inspect [on|off] - enables or disables inspect mode /lg inspect <pos> - inspects the block at a given position

Search

/lg search <args> - searches with the given arguments

Rollback

/lg rollback <args> - rollbacks with filters specified

Page

/lg page <index>

When viewing results, you can use this command to quickly skip to a certain page.

Permissions

All Ledger commands support the LuckPerms API

The permission nodes are formatted as: ledger.<command>

All Ledger commands have fallback on permission level 3 should you not wish to have a permissions mod installed.

Contribute

Ledger is written in Kotlin, and therefore all contributions should be in Kotlin where possible. The exceptions to this are mixins, which must be written in Java.

ledger's People

Contributors

adminhcat avatar altirix avatar baeumchen127 avatar basiqueevangelist avatar drexhd avatar emielderckx avatar fnltochka avatar genau6502 avatar nikijaz avatar occanowey avatar pompompopi avatar potatopresident avatar powerlated avatar sayl6 avatar solonovamax avatar southpaw1496 avatar thedeathlycow avatar tom-the-geek avatar triphora avatar vacla avatar wesley1808 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ledger's Issues

Ledger incompatible with FabricProxy-Lite

Expected behavior

Server should start with both mods installed.

Observed/actual behavior

Server crashes when both mods are installed simultaniously, no issue with them seperatly installed.

Server log:

[14:36:14] [main/INFO]: Loading for game Minecraft 1.17.1
[14:36:14] [main/WARN]: Warnings were found!
 - Mod 'Fabric Rendering Fluids (v1)' (fabric-rendering-fluids-v1) recommends any version of fabric-textures-v0, which is disabled for this environment (client/server only)!
	 - You should install any version of fabric-textures-v0 for the optimal experience.
[14:36:14] [main/INFO]: Loading 53 mods:
	- autoconfig1u 3.3.1
	- fabric 0.42.1+1.17
	- fabric-api-base 0.4.0+5847535018
	- fabric-api-lookup-api-v1 1.3.1+5847535018
	- fabric-biome-api-v1 3.2.2+5847535018
	- fabric-command-api-v1 1.1.4+5847535018
	- fabric-commands-v0 0.2.3+5847535018
	- fabric-containers-v0 0.1.13+5847535018
	- fabric-content-registries-v0 0.3.1+5847535018
	- fabric-crash-report-info-v1 0.1.6+5847535018
	- fabric-dimensions-v1 2.0.13+5847535018
	- fabric-entity-events-v1 1.3.1+5847535018
	- fabric-events-interaction-v0 0.4.11+5847535018
	- fabric-events-lifecycle-v0 0.2.2+5847535018
	- fabric-game-rule-api-v1 1.0.8+5847535018
	- fabric-item-api-v1 1.2.5+5847535018
	- fabric-item-groups-v0 0.3.1+5847535018
	- fabric-language-kotlin 1.6.5+kotlin.1.5.31
	- fabric-lifecycle-events-v1 1.4.5+5847535018
	- fabric-loot-tables-v1 1.0.5+5847535018
	- fabric-mining-level-api-v1 1.0.2+6d0fac4218
	- fabric-mining-levels-v0 0.1.5+6d0fac4218
	- fabric-networking-api-v1 1.0.14+5847535018
	- fabric-networking-blockentity-v0 0.2.12+5847535018
	- fabric-networking-v0 0.3.3+5847535018
	- fabric-object-builder-api-v1 1.10.11+6d0fac4218
	- fabric-object-builders-v0 0.7.5+6d0fac4218
	- fabric-particles-v1 0.2.5+5847535018
	- fabric-permissions-api-v0 0.1-SNAPSHOT
	- fabric-registry-sync-v0 0.7.13+5847535018
	- fabric-rendering-data-attachment-v1 0.1.6+5847535018
	- fabric-rendering-fluids-v1 0.2.1+6d0fac4218
	- fabric-resource-loader-v0 0.4.9+5847535018
	- fabric-screen-handler-api-v1 1.1.9+5847535018
	- fabric-structure-api-v1 1.1.14+5847535018
	- fabric-tag-extensions-v0 1.2.2+5847535018
	- fabric-tool-attribute-api-v1 1.3.1+eb76084f18
	- fabric-transfer-api-v1 1.5.1+6d0fac4218
	- fabricloader 0.12.5
	- fabricproxy-lite 1.1.5
	- java 17
	- ledger 1.1.1
	- minecraft 1.17.1
	- org_jetbrains_kotlin_kotlin-reflect 1.5.31
	- org_jetbrains_kotlin_kotlin-stdlib 1.5.31
	- org_jetbrains_kotlin_kotlin-stdlib-jdk7 1.5.31
	- org_jetbrains_kotlin_kotlin-stdlib-jdk8 1.5.31
	- org_jetbrains_kotlinx_kotlinx-coroutines-core-jvm 1.5.2
	- org_jetbrains_kotlinx_kotlinx-coroutines-jdk8 1.5.2
	- org_jetbrains_kotlinx_kotlinx-serialization-core-jvm 1.3.0
	- org_jetbrains_kotlinx_kotlinx-serialization-json-jvm 1.3.0
	- packet_tweaker 0.2.0-1.17-pre1
	- server_translations_api 1.4.5+1.17
[14:36:14] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.4 Source=file:/home/adrian/Minecraft/Fabric/1.17.1/fabric-server-launch.jar Service=Knot/Fabric Env=SERVER
[14:36:14] [main/INFO]: Compatibility level set to JAVA_16
[14:36:15] [main/ERROR]: Mixin prepare for mod server_translations_api failed preparing text.BaseTextMixin in server_translations_api.mixin.json: org.spongepowered.asm.mixin.transformer.throwables.MixinTargetAlreadyLoadedException Critical problem: server_translations_api.mixin.json:text.BaseTextMixin target net.minecraft.class_2554 was loaded too early.
org.spongepowered.asm.mixin.transformer.throwables.MixinTargetAlreadyLoadedException: Critical problem: server_translations_api.mixin.json:text.BaseTextMixin target net.minecraft.class_2554 was loaded too early.
	at org.spongepowered.asm.mixin.transformer.MixinInfo.readDeclaredTargets(MixinInfo.java:948) ~[fabric-server-launch.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinInfo.<init>(MixinInfo.java:882) ~[fabric-server-launch.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinConfig.prepareMixins(MixinConfig.java:852) ~[fabric-server-launch.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinConfig.prepare(MixinConfig.java:777) ~[fabric-server-launch.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.prepareConfigs(MixinProcessor.java:540) [fabric-server-launch.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.select(MixinProcessor.java:462) [fabric-server-launch.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.checkSelect(MixinProcessor.java:438) [fabric-server-launch.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:290) [fabric-server-launch.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234) [fabric-server-launch.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202) [fabric-server-launch.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:222) [fabric-server-launch.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:133) [fabric-server-launch.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:155) [fabric-server-launch.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:519) [?:?]
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:566) [fabric-server-launch.jar:?]
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) [fabric-server-launch.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotServer.main(KnotServer.java:23) [fabric-server-launch.jar:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at net.fabricmc.loader.impl.launch.server.FabricServerLauncher.launch(FabricServerLauncher.java:72) [fabric-server-launch.jar:?]
	at net.fabricmc.loader.impl.launch.server.FabricServerLauncher.setup(FabricServerLauncher.java:98) [fabric-server-launch.jar:?]
	at net.fabricmc.loader.impl.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:60) [fabric-server-launch.jar:?]


Steps/models to reproduce

  1. Install fabricmc server on latest version (fabricloader 0.12.5, Minecraft 1.17.1)
  2. Install latest ledger version (1.1.1) along with fabric-api (0.42.1) and fabric-language-kotlin (1.6.5)
  3. Install FabricProxy-Lite (1.1.5) (here)
  4. Start the server
  5. Server will crash

What operating system are you running

Linux

Minecraft version

1.17.1

Ledger version

1.1.1

Logs

https://www.toptal.com/developers/hastebin/iqiyiyonat.yaml

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

No response

Extreme lag in searching very large database files

Expected behavior

A quick response from the database, perhaps only a few seconds.

Observed/actual behavior

Often waiting over a minute for a search result to return.

Steps/models to reproduce

  1. Collect a very large database (my server's database file is currently 13GB)
  2. Run any ledger command that would return a page of logged actions (e.x. /lg s radius:5)

What operating system are you running

Linux

Minecraft version

1.17.1

Ledger version

1.0.2

Logs

https://pastebin.com/KhphPhEF

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

This isn't exactly a bug, but a very annoying result of large database files that makes searching for wrongdoers difficult when time is of the essence. Possible solutions range from more optimized search methods to simply creating separate database files for different periods of time, such as one for every day or week, or when it reaches a preconfigured size such as 1GB.

If you would like my database to test with so you don't have to generate one yourself, let me know.

Server crashes when I try to run with all the fabric 4

Expected behavior

Server should start up fine with ledger

Observed/actual behavior

It threw the error log

Encountered an unexpected exception
java.lang.NoSuchMethodError: 'void org.jetbrains.exposed.sql.vendors.ColumnMetadata.<init>(java.lang.String, int, boolean, java.lang.Integer)'
        at org.jetbrains.exposed.sql.statements.jdbc.JdbcDatabaseMetadataImpl$columns$result$1.invoke(JdbcDatabaseMetadataImpl.java:135) ~[ledger-1.0.2.jar:?]
        at org.jetbrains.exposed.sql.statements.jdbc.JdbcDatabaseMetadataImpl$columns$result$1.invoke(JdbcDatabaseMetadataImpl.java:13) ~[ledger-1.0.2.jar:?]
        at org.jetbrains.exposed.sql.statements.jdbc.JdbcDatabaseMetadataImpl.extractColumns(JdbcDatabaseMetadataImpl.java:123) ~[ledger-1.0.2.jar:?]
        at org.jetbrains.exposed.sql.statements.jdbc.JdbcDatabaseMetadataImpl.columns(JdbcDatabaseMetadataImpl.java:133) ~[ledger-1.0.2.jar:?]
        at org.jetbrains.exposed.sql.vendors.VendorDialect$tableColumns$1.invoke(Default.kt:678) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.vendors.VendorDialect$tableColumns$1.invoke(Default.kt:678) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.statements.jdbc.JdbcConnectionImpl.metadata(JdbcConnectionImpl.java:51) ~[ledger-1.0.2.jar:?]
        at org.jetbrains.exposed.sql.vendors.VendorDialect.tableColumns(Default.kt:678) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.SchemaUtils.addMissingColumnsStatements(SchemaUtils.kt:117) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns(SchemaUtils.kt:247) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.SchemaUtils.createMissingTablesAndColumns$default(SchemaUtils.kt:235) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at com.github.quiltservertools.ledger.database.DatabaseManager$ensureTables$1.invoke(DatabaseManager.java:77) ~[ledger-1.0.2.jar:?]
        at com.github.quiltservertools.ledger.database.DatabaseManager$ensureTables$1.invoke(DatabaseManager.java:76) ~[ledger-1.0.2.jar:?]
        at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:173) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.access$inTopLevelTransaction$run(ThreadLocalTransactionManager.kt:1) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$inTopLevelTransaction$1.invoke(ThreadLocalTransactionManager.kt:194) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:202) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.inTopLevelTransaction(ThreadLocalTransactionManager.kt:193) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt$transaction$1.invoke(ThreadLocalTransactionManager.kt:151) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.keepAndRestoreTransactionRefAfterRun(ThreadLocalTransactionManager.kt:202) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:123) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction(ThreadLocalTransactionManager.kt:121) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at org.jetbrains.exposed.sql.transactions.ThreadLocalTransactionManagerKt.transaction$default(ThreadLocalTransactionManager.kt:120) ~[d9e97d2b-3da9-493d-9678-f6d29630b45d.jar:?]
        at com.github.quiltservertools.ledger.database.DatabaseManager.ensureTables(DatabaseManager.java:76) ~[ledger-1.0.2.jar:?]
        at com.github.quiltservertools.ledger.Ledger.serverStarting(Ledger.java:71) ~[ledger-1.0.2.jar:?]
        at net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents.lambda$static$0(ServerLifecycleEvents.java:37) ~[c12f3ace-546b-4893-a264-d2665849c974.jar:?]
        at net.minecraft.server.MinecraftServer.handler$cej000$beforeSetupServer(MinecraftServer.java:7802) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:670) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:270) ~[intermediary-server.jar:?]
        at java.lang.Thread.run(Thread.java:831) [?:?]
[14:58:24] [Server thread/ERROR]: This crash report has been saved to: /home/container/./crash-reports/crash-2021-08-24_14.58.24-server.txt
[14:58:24] [Server thread/INFO]: Stopping server
[14:58:24] [Server thread/INFO]: Saving worlds
[14:58:24] [Server thread/ERROR]: Exception stopping the server
java.lang.NullPointerException: Cannot invoke "net.minecraft.class_3218.method_8621()" because "รขหœฦ’" is null
        at net.minecraft.server.MinecraftServer.method_3723(MinecraftServer.java:588) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_3782(MinecraftServer.java:624) ~[intermediary-server.jar:?]
        at net.minecraft.class_3176.method_3782(class_3176.java:585) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:734) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:270) ~[intermediary-server.jar:?]
        at java.lang.Thread.run(Thread.java:831) [?:?]

Steps/models to reproduce

  1. Start up all the mods server
  2. Add ledger
  3. Start server

What operating system are you running

Linux

Minecraft version

1.17.1

Ledger version

1.0.2

Logs

https://neb.cx/dedavikuzo.sql

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

No response

Armor stand interactions are not logged

Expected behavior

After taking armor from an armor stand, this will be noted as a player action and as so, will appear in the "/ledger search source:player" list.

Observed/actual behavior

Nothing seems to be logged at all

Steps/models to reproduce

Here's a quick video showcasing the process:
https://user-images.githubusercontent.com/71695040/145356866-4b406c07-bc6f-4423-bae1-ee9c82dd6f36.mp4

(i'm using carpet and lithium as you can see from my latest log. May be a compatibility issue)

What operating system are you running

Linux

Minecraft version

1.18 Server

Ledger version

1.2.0

Logs

https://github.com/QuiltServerTools/Ledger/files/7683304/latest.log

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

I'm using carpet and lithium as you can see from my latest log. So this may be a compatibility issue

No results shown for queries of any kind

When running any form of query (Search, inspect, rollback, preview) there are no results returned by the database. All actions remain logged, and no errors are in the server logs

To Reproduce
Steps to reproduce the behavior:

  1. Run a command querying the database

Screenshots
image

Device Info:

  • OS: *
  • Minecraft Version: 1.17
  • Version: 1.0.2

Additional context

Is caused by either 458802d or 2ae0ec2

A rolled back chest is always empty.

Expected behavior

I expect the chest's contents to be logged/maintained. As per #4 being fixed in June.

Observed/actual behavior

Rollback places an empty chest, regardless of its contents prior to being broken.

Steps/models to reproduce

  1. place a chest
  2. insert any items
  3. break the chest
  4. run /ledger rollback action:block-break object:minecraft:chest
  5. observe an empty chest being placed

What operating system are you running

Windows

Minecraft version

1.18.1

Ledger version

1.2.0

Logs

https://drive.google.com/file/d/1KTnuqVHtgvnPX50oIHGAKxH_BiaLP8X8/view?usp=sharing

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

I am new to ledger, so feel free to correct me if I am missing a step here.
That said, I also don't know if inventory contents used to be shown in logs. I would hope to see the contents of inventories from the logs seen in chat. As it is right now I have to "balance my checkbook" to correctly moderate any incidents.
Let me know if this was never the case, and I'll open this as a feature request.

Thank you! This mod is quite nice.

Things that aren't logged by ledger

Good job on fixing the errors and making the commands easier to use!
But it's not really useful for preventing griefing yet because:

  • When a player sets off a tnt, it doesn't count as them doing it
  • Item frames aren't tracked at all
  • Signs don't retain the text written on them
  • When you replace water or lava with another block it just rollbacks to air
  • Chest's contents lost on break
  • Farmland trampling
  • Sponges clearing out water aren't tracked
  • When a player flint and steels a tree and you rollback, it fills back whatever blocks were broken but the fire remains. Also, it doesn't count as that player doing it. Generally, rolling back fire doesn't work well
  • When a player activates an end crystal it doesn't count as that player doing it
  • Dispenser block placement (and other things)
  • Path flattening
  • Piston movement
  • Removing or adding books to a lectern
  • The state of levers
  • Moss transmutation
  • Now it shows that a explosion broke something but I would love to see what the explosion was (a bed, respawn anchor, etc) and then also who set it on.
  • Ledger doesn't log when you click with a shovel on a campfire or when you light it
  • Ledger doesn't log bamboo getting broken by gravity
  • Ledger doesn't log it if you light candles
  • When you bonemeal Rooted Dirt the newly grown roots doesn't get logged
  • Leaf decay isn't logged
  • The snow that snowgolems place isn't logged
  • Flowerpot transactions aren't logged
  • Scaffholding/supported blocks
  • Frost water logging
  • Bed rotation is not logged so only one half of the bed will get restored facing the wrong way.
  • Fences do not keep their connection with other fences, same with double chests
  • Fire placed by explosions not logged
  • Armor stand deaths not logged
  • Cauldron transactions
  • Ravagers breaking leaves
  • Jukebox transactions
  • Players changing day/night state of daylight sensors
  • Player changing the notes on a noteblock
  • I think shooting/breaking Chorus Flower with a bow & arrow is not logged
  • growing kelp, weeping vines, twisting vines, grass, fern & seagrass with bonemeal
  • Putting wax on any copper block, the same for removing wax of any copper block
  • Coral & coral fans dying
  • Paintings placement/removal
  • The creation of nether portals
  • #123

Creeper explosion logging

Is your feature request related to a problem?

Yes. When a creeper is triggered from a player and it explodes, it doesn't log the player as the source.

Describe the solution you'd like.

I would like the blocks broken to be attributed to the person that triggered the creeper.

Describe alternatives you've considered.

You can rollback the explosion anyway without the source tag, but you would still be able to do it if you added this feature.

Agreements

  • I have searched for and ensured there isn't already an open issue regarding this.
  • I have ensured the feature I'm requesting isn't already in the latest supported mod version.

Other

No response

Respect save-on, save-off, and save-all commands.

Is your feature request related to a problem?

With automated backup systems, it is expected that no world files are touched for a brief period. By default, Ledger stores a SQLite database in the world folder and modifies it without respect to the admin/console commands.

Describe the solution you'd like.

Have Ledger follow the expected logic for save-on, save-off, and save-all

Describe alternatives you've considered.

Using an external database, but I have no easy/cheap way to do this for the moment.

Agreements

  • I have searched for and ensured there isn't already an open issue regarding this.
  • I have ensured the feature I'm requesting isn't already in the latest supported mod version.

Other

No response

Please confirm support for 1.18.1

Is your feature request related to a problem?

I would like to upgrade my world to 1.18.1, but this mod is vital, so I'd like to know if it will work?

Describe the solution you'd like.

A simple confirmation that it will work on 1.18.1

Describe alternatives you've considered.

I could test it myself, and probably will in the next week.

Agreements

  • I have searched for and ensured there isn't already an open issue regarding this.
  • I have ensured the feature I'm requesting isn't already in the latest supported mod version.

Other

No response

API for accessing Ledger data from another plugin

Is your feature request related to a problem?

Hello, I got a feature request on my analytics plugin to add support for Ledger data.

To me Ledger appears to be an event logging tool so there's vast data available. I think following data points would be interesting for users to see:

  • How many ores the player has mined comparing to regular stone
  • Any xray warning information? (I'm unsure if this is available, but the ticket I got mentioned it)
  • Anything else you would like the users to see on a dashboard about a player. Lists of ~500 are manageable and any metadata (Like aggregates of different kinds of events of a player) may be interesting as well - Server wide aggregates may also be interesting if you want to implement an api for getting them, but it might be out of scope for this ticket.

Describe the solution you'd like.

  • I would like to get a memory optimized view of this data (Like block counts) to avoid crashing server when getting the data (A thing that happened with CoreProtect API).
  • Some way of getting list of ores and list of different kinds of stone in order to query their counts more effectively (Since modded can have more types of ore than what I can manually code in)
    • I'm planning on visualizing this on a table "Ore name - count - ratio / stone"
    • I might need the name of the ore
    • If possible the rarity of the ore may be useful for determining which ratios to show more prominently, but it may be out of scope for this ticket.
  • Some way to get a list of xray warnings for a player if you store that data somewhere

Describe alternatives you've considered.

I tried to look at the code for existing APIs that could do this, but my kotlin is kinda poor and I was unable to find methods to do this using IntelliJ code completion in a Java project

Agreements

  • I have searched for and ensured there isn't already an open issue regarding this.
  • I have ensured the feature I'm requesting isn't already in the latest supported mod version.

Other

Not all result given that are available

Describe the bug
It seems that it only shows the first few results

To Reproduce
/ledger search action:block-break time:100w range:50
/ledger search time:100w range:50
/ledger search action:block-break range:50
/ledger search action:block-break time:100w
/ledger search action:block-break time:100w range:5

Expected behavior
Give all results back not the first ones only

Screenshots
https://streamable.com/gcyblb

Device Info(please complete the following information):

  • OS: Windows
  • Minecraft Version 1.17.0
  • Version 1.0.0
  • Watson watson-fabric-1.17.0-1.11.0.20210703.224053

Log
https://gist.github.com/vacla/93aca1c4ab3641448e055663b0bb4b8e

Additional context

Present log state in data packets

Is your feature request related to a problem? Please describe.
Supportive mods such as "Watson" are unable to identify a log entry (without chat scraping) that may be rolled back, restored, or any other state.

Describe the solution you'd like
As the title suggests, include a enum state or something of the log's status (rolled back/whatever other internals you might have I can't think of right now)

Describe alternatives you've considered
Chat scraping, but this can lead to problems if text is dramatically different from expected pattern.

Additional context
Add any other context or screenshots about the feature request here.

Previews not canceling

If you start a preview with one already happening, the old one isn't canceled and not tracked.

Ledger sometimes does not log some actions and spam errors to the console.

Describe the bug
Hello. First of all, I want to say thank you for developing this wonderful mod, without which a quiet game on vanilla servers is impossible. But unfortunately, very, very often various errors occur with this mod. For example, for some unknown reason, it very often does not record even the most common actions of players, such as placing and breaking blocks, and after a few seconds it starts logging again. You can see an example in the screenshot. I made a small install from TNT and blew it up, then rolled it back with Ledger. As you can see, only a small part in the middle of the crater has rolled back. The rest, what did not roll back, is not even logged.

To Reproduce
Steps to reproduce the behavior:
I donโ€™t know how exactly to repeat this, these problems occur randomly. Just try to do some action, break and destroy blocks, blow up TNT, etc., and then try looking at the logs with the Ledger.

Expected behavior
Well, I don't even know, probably normal logging of all actions. ยฏ_(ใƒ„)_/ยฏ

Screenshots
https://i.ibb.co/0YZK5Yc/2021-06-28-00-06-34.png

Device Info(please complete the following information):

  • OS: Windows 10
  • Minecraft Version: 1.17
  • Version: 1.0.1

Log
https://hastebin.com/ohiqalicuf.yaml

Additional context
In my server log you will see many different errors, they all seem to be due to Ledger, I still do not understand exactly when they appear, it seems that randomly. Without it, these errors do not arise. Hopefully you can fix that as this mod is a must have for small vanilla servers. ๐Ÿ™

Issue with Farmer's Delight cooking pot block

Expected behavior

I expect to be able to open the Farmer's Delight cooking pot without issue when Ledger is installed.

Observed/actual behavior

The pot doesn't open and console throws an error.

Steps/models to reproduce

  1. Place down and setup a cooking pot from Farmer's Delight in the world.
  2. Right click on it with Ledger installed to try to open it.
  3. Observe it doesn't open.

What operating system are you running

Linux

Minecraft version

1.17.1

Ledger version

1.1.1

Logs

https://paste.gg/p/anonymous/f911cd1780af43b194c7f23ee81c9b4a

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

The latest.log had just reset but hopefully it's got enough errors for you guys. Also if this is an issue on Farmer's Delight's end I'll be more than happy to throw an issue their way.

Allow searches with NOT as an argument

Is your feature request related to a problem?

It would be nice if at someone's base, to look for any action that isn't the owner's. For example, at RandomGgames' base, I can't search for actions that are by everyone except RandomGgames.

Describe the solution you'd like.

Add a feature for :!{Username} in the search conditions or :NOT:{Username} or something like that.

Describe alternatives you've considered.

The only real way to do this is to scroll through the search, ignoring everything except the username you want to ignore. Not sure if there's an easier way currently.

Agreements

  • I have searched for and ensured there isn't already an open issue regarding this.
  • I have ensured the feature I'm requesting isn't already in the latest supported mod version.

Other

No response

Kibe Placer and WitherBuilder cause server crash when trying to place a block

Expected behavior

Not Crash.

Observed/actual behavior

I have this in object blacklist but I'm guessing this blacklist doesn't matter to the mixin/callback event.
objectBlacklist = [
"kibe:cooler",
"kibe:cooler_item",
"kibe:big_torch",
"kibe:chunk_loader",
"kibe:drawbridge",
"kibe:breaker",
"kibe:placer",
"kibe:wither_builder"
]

Steps/models to reproduce

Have a Kibe placer or witherbuild place a block with ledger on the server

What operating system are you running

Linux

Minecraft version

1.17.1

Ledger version

1.0.2

Logs

https://paste.alloffabric.com/ibiwihubez.yaml

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

kibe.blocks.placer.Placer kibe.utils.FakePlayerEntity at net.minecraft.item.BlockItem.place(BlockItem.java:100)
https://paste.alloffabric.com/ibiwihubez.yaml
kibe.blocks.witherbuilder.WitherBuilder kibe.utils.FakePlayerEntity at net.minecraft.item.BlockItem.place(BlockItem.java:100)
https://paste.alloffabric.com/igatidevoh.yaml

"ME Item Interface" right click interface not working on "Applied Energistics 2" mod with Ledger

Expected behavior

Without Ledger working as intended - interface opening on right click

Observed/actual behavior

With Ledger not working - nothing happens on right click and errors in server log

Steps/models to reproduce

installed mods:

appliedenergistics2-9.0.0-beta.2.jar
fabric-api-0.42.1+1.17.jar
fabric-language-kotlin-1.6.5+kotlin.1.5.31.jar
ledger-1.1.1.jar

go to creative
place item "ME Item Interface" to world
right click to it
must be interface if everything working

What operating system are you running

Linux

Minecraft version

1.17.1

Ledger version

1.1.1

Logs

https://pastebin.com/raw/JcNRqLsy

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

similar issue reported to mod: AppliedEnergistics/Applied-Energistics-2#5552
they said report it to ledger

Conflict with Gunpowder Mod

Expected behavior

Ledger logs actions and being able to query them.

Observed/actual behavior

If installed alongside Gunpowder, Ledger wouldn't record any action, neither be able to query them. Each action causes some error message.

Steps/models to reproduce

  1. On a fabric server, install ledger, gunpowder-base, 2. (also fabric API and fabric language Kotlin as they are needed by gunpowder)
  2. Launch the server, the server will start and run normally except for some error message.
  3. Use Ledger and notice something is wrong

What operating system are you running

Linux

Minecraft version

1.17.1

Ledger version

1.0.2

Logs

https://pastebin.com/m9qEWqAs

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

Copied from Gunpowder Curseforge page to serve as a definition of this term.

Gunpowder aims to provide an all-in-one API for your server modding needs.

[Feature] purge command

Hi,

I'm posting this here, as my request on discord doesn't really help keeping track of stuff haha.

It would be awesome to have access to a ledger purge [args] command, that would accept arguments that the search command provide. So we could remove everything older than 30days for example, or everything done by a banned user.

Conflict with Better Hoppers

Expected behavior

Be able to open any kind of hopper when using ledger and BetterHoppers

Observed/actual behavior

I can't open any kind of hopper and when I try to do so an error is thrown in the console.

Steps/models to reproduce

Use:
[โœ”๏ธ] fabric-api-0.40.1+1.17
[โœ”๏ธ] fabric-language-kotlin-1.6.4+kotlin.1.5.30
[โœ”๏ธ] flytre-lib-1.3.7
[โœ”๏ธ] hplus-3.0.1
[โœ”๏ธ] ledger-1.0.2

Try to open any hopper container.

What operating system are you running

Windows

Minecraft version

1.17.1

Ledger version

1.0.2

Logs

Server log https://paste.lucko.me/7ndXtWGxa7

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

No response

Add GitHub Description

I would just use the sentence you have in the README as a GitHub description:

A world change logging tool for fabric

Empty descriptions always looks bad, when sharing repos

[BUG] Not logging placement of fire

Describe the bug
If a player uses flint and steel to place fire than break it, using /lg i only shows that the fire is placed, not who placed it or how.

To Reproduce
Steps to reproduce the behavior:

  1. Place fire using flint and steel
  2. Break the fire
  3. Inspect the block

Expected behavior
The logs show that someone placed the fire and destroied it, not just destroied it.

Device Info(please complete the following information):

  • OS: Windows
  • Minecraft Version 1.17.1 (mods: environmental creepers, fabric api, carpet, tree chopper, lithium, minitweaks, servux, voicechat, xaero's minimap)
  • Version 1.0.2

Broken Anvil does not show up in logs

Expected behavior

When I use /lg inspect and check a block location it isn't showing who broke the anvil in the logs.

Observed/actual behavior

The logs did not contain any reports about who last used the anvil to break it.

Steps/models to reproduce

  1. Place down anvil
  2. Use anvil until broken
  3. Check logs using /lg inspect to find that there is no anvil logged.

What operating system are you running

Linux

Minecraft version

1.18.1

Ledger version

1.2.0

Logs

Don't have any.

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

No response

Command doesn't work on MC 1.17.1

Expected behavior

I can use the /ledger command normally.

Observed/actual behavior

Command /ledger and /lg doesn't work.

Steps/models to reproduce

  1. OS: Debian 10.10, also tried Windows 10
  2. Install AdoptOpenJDK-16-jre (Both Hotspot and OpenJ9 are tried)
  3. Install fabric server (MC 1.17.1, fabric loader 0.11.6)
  4. Install mods (fabric api 0.37.0, fabric language kotlin 1.6.3+kotlin.1.5.21(also tried 1.6.2+kotlin.1.5.20), ledger 1.0.2)
  5. Start the server
  6. Enter command ledger (Also tried using a client)

What operating system are you running

Linux

Minecraft version

1.17.1

Ledger version

1.0.2

Logs

https://hastebin.com/egegopesek.sql

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

Database are updated normally.

Throw WARN sometimes

Expected behavior

No WARNs or ERRORs.

Observed/actual behavior

WARN:

[Server] [01:31:30] [DefaultDispatcher-worker-2/WARN]: Transaction attempt #1 failed: org.sqlite.SQLiteException: [SQLITE_CORRUPT]  The database disk image is malformed (database disk image is malformed). Statement(s): INSERT INTO actions (action_id, extra_data, object_id, old_object_id, rolled_back, "source", "time", world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
[Server] org.jetbrains.exposed.exceptions.ExposedSQLException: org.sqlite.SQLiteException: [SQLITE_CORRUPT]  The database disk image is malformed (database disk image is malformed)
[Server]        at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.java:62) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.Transaction.exec(Transaction.java:129) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.Transaction.exec(Transaction.java:115) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.statements.Statement.execute(Statement.java:28) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.QueriesKt.batchInsert(QueriesKt.java:134) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.QueriesKt.batchInsert$default(QueriesKt.java:89) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.dao.EntityCache.flushInserts$exposed_dao(EntityCache.java:119) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.dao.EntityCache.flush(EntityCache.java:79) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.dao.EntityCache.flush(EntityCache.java:48) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.dao.EntityCacheKt.flushCache(EntityCacheKt.java:161) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.dao.EntityLifecycleInterceptor.beforeCommit(EntityLifecycleInterceptor.java:40) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.Transaction.commit(Transaction.java:63) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt$suspendedTransactionAsyncInternal$1.invokeSuspend(SuspendedKt.java:117) [%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) [af536ab9-91eb-48d0-a168-eff675c274ba.jar:?]
[Server]        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) [bf32989f-e0ba-4ff1-9530-8c3560d37a97.jar:?]
[Server]        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) [bf32989f-e0ba-4ff1-9530-8c3560d37a97.jar:?]
[Server]        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) [bf32989f-e0ba-4ff1-9530-8c3560d37a97.jar:?]
[Server]        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) [bf32989f-e0ba-4ff1-9530-8c3560d37a97.jar:?]
[Server]        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) [bf32989f-e0ba-4ff1-9530-8c3560d37a97.jar:?]
[Server] Caused by: org.sqlite.SQLiteException: [SQLITE_CORRUPT]  The database disk image is malformed (database disk image is malformed)
[Server]        at org.sqlite.core.DB.newSQLException(DB.java:1012) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.sqlite.core.DB.newSQLException(DB.java:1024) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.sqlite.core.DB.throwex(DB.java:989) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.sqlite.core.DB.executeBatch(DB.java:814) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.sqlite.core.CorePreparedStatement.executeBatch(CorePreparedStatement.java:64) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeBatch(JdbcPreparedStatementImpl.java:48) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.statements.InsertStatement.execInsertFunction(InsertStatement.java:111) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.statements.InsertStatement.executeInternal(InsertStatement.java:117) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.statements.InsertStatement.executeInternal(InsertStatement.java:11) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.java:60) ~[%5B%E6%A0%B8%E5%BF%83%E4%BF%9D%E6%8A%A4%5D%20ledger-1.0.2.jar:?]
[Server]        ... 18 more
[Server] Exception in thread "DefaultDispatcher-worker-2" org.jetbrains.exposed.exceptions.ExposedSQLException: org.sqlite.SQLiteException: [SQLITE_CORRUPT]  The database disk image is malformed (database disk image is malformed)
[Server] SQL: [INSERT INTO actions (action_id, extra_data, object_id, old_object_id, rolled_back, "source", "time", world_id, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
[Server]        at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.java:62)
[Server]        at org.jetbrains.exposed.sql.Transaction.exec(Transaction.java:129)
[Server]        at org.jetbrains.exposed.sql.Transaction.exec(Transaction.java:115)
[Server]        at org.jetbrains.exposed.sql.statements.Statement.execute(Statement.java:28)
[Server]        at org.jetbrains.exposed.sql.QueriesKt.batchInsert(QueriesKt.java:134)
[Server]        at org.jetbrains.exposed.sql.QueriesKt.batchInsert$default(QueriesKt.java:89)
[Server]        at org.jetbrains.exposed.dao.EntityCache.flushInserts$exposed_dao(EntityCache.java:119)
[Server]        at org.jetbrains.exposed.dao.EntityCache.flush(EntityCache.java:79)
[Server]        at org.jetbrains.exposed.dao.EntityCache.flush(EntityCache.java:48)
[Server]        at org.jetbrains.exposed.dao.EntityCacheKt.flushCache(EntityCacheKt.java:161)
[Server]        at org.jetbrains.exposed.dao.EntityLifecycleInterceptor.beforeCommit(EntityLifecycleInterceptor.java:40)
[Server]        at org.jetbrains.exposed.sql.Transaction.commit(Transaction.java:63)
[Server]        at org.jetbrains.exposed.sql.transactions.experimental.SuspendedKt$suspendedTransactionAsyncInternal$1.invokeSuspend(SuspendedKt.java:117)
[Server]        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
[Server]        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
[Server]        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
[Server]        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
[Server]        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
[Server]        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
[Server] Caused by: org.sqlite.SQLiteException: [SQLITE_CORRUPT]  The database disk image is malformed (database disk image is malformed)
[Server]        at org.sqlite.core.DB.newSQLException(DB.java:1012)
[Server]        at org.sqlite.core.DB.newSQLException(DB.java:1024)
[Server]        at org.sqlite.core.DB.throwex(DB.java:989)
[Server]        at org.sqlite.core.DB.executeBatch(DB.java:814)
[Server]        at org.sqlite.core.CorePreparedStatement.executeBatch(CorePreparedStatement.java:64)
[Server]        at org.jetbrains.exposed.sql.statements.jdbc.JdbcPreparedStatementImpl.executeBatch(JdbcPreparedStatementImpl.java:48)
[Server]        at org.jetbrains.exposed.sql.statements.InsertStatement.execInsertFunction(InsertStatement.java:111)
[Server]        at org.jetbrains.exposed.sql.statements.InsertStatement.executeInternal(InsertStatement.java:117)
[Server]        at org.jetbrains.exposed.sql.statements.InsertStatement.executeInternal(InsertStatement.java:11)
[Server]        at org.jetbrains.exposed.sql.statements.Statement.executeIn$exposed_core(Statement.java:60)
[Server]        ... 18 more

Steps/models to reproduce

I don't know how it occurs.

What operating system are you running

Linux

Minecraft version

1.17.1

Ledger version

1.0.2

Logs

https://hastebin.com/qibapeyibo.pl

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

No response

Port to 1.16

Is your feature request related to a problem?

Hi, i have fabric server on 1.16.5 because most of the mods is on 1.16 minecraft version. Can you port your mod on lower version?

Describe the solution you'd like.

Create a jar file for 1.16 - 1.16.5

Describe alternatives you've considered.

No alternatives, because CoreProtect is only on spigot/paper

Agreements

  • I have searched for and ensured there isn't already an open issue regarding this.
  • I have ensured the feature I'm requesting isn't already in the latest supported mod version.

Other

No response

com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 1 path $

Describe the bug
Written book data sent to a client can disconnect the player with an error. The book can be in a chest, a dropped item or in the player's inventory.

[20:02:41] [Netty Epoll Server IO #1/ERROR]: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 1 path $
[20:02:41] [Server thread/INFO]: Zedwick lost connection: Internal Exception: io.netty.handler.codec.EncoderException: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected value at line 1 column 1 path $                
[20:02:41] [Server thread/INFO]: Zedwick left the game

To Reproduce
Steps to reproduce the behavior:

  1. Install Ledger
  2. Get a blank written book
  3. Enter a single '=' into the book
  4. Click Done
  5. Be immediately disconnected.

Expected behavior
Written books with an '=' should not disconnect the player.

Device Info(please complete the following information):

  • OS: Debian
  • Minecraft Version: 1.17
  • Version: 1.0.0

Additional context
This has been tested with and without Ledger; Without ledger this error does not occur, but with Ledger it does. I left Fabric Kotlin installed in all tests, and made no other changes.

I also had Fabric API, and FabricProxy mods installed.

TNT explosions aren't logged

Expected behavior

When a block of TNT explodes I expect the @tnt source to log block-breaks.

Observed/actual behavior

No TNT explosions are logged. It's shown in the documentation that @tnt is an example source yet nothing is logged for them.

Steps/models to reproduce

  1. Place TNT
  2. Blow it up
  3. Search ledger for the area
  4. The TNT block being placed is logged but nothing else related to it.

What operating system are you running

Linux

Minecraft version

1.17.1

Ledger version

1.1.1+build.457

Logs

https://paste.gg/p/mja00/7948da5848d845b29e6c094c1cd469fc

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

I did notice a recent PR to log more things which I updated to by building the latest commit myself but that still didn't fix tnt logging.

Negative index in crash report handler (0/21) / Error executing task on Server

Describe the bug
Inspecting a chest with item transaction history yields an error in the logs.
The inspect otherwise appears successful, and shows the history in chat.

To Reproduce
Steps to reproduce the behavior:

  1. Place a chest
  2. Place any item into chest
  3. /lg inspect
  4. Left click on chest

Expected behavior
Everything seems to work, but I do not expect the error in the logs

Device Info(please complete the following information):

  • OS: Debian
  • Minecraft Version: 1.17
  • Version: 1.0.1

Log:

[20:20:31] [Server thread/INFO]: [STDOUT]: Negative index in crash report handler (0/21)
[20:20:31] [Server thread/FATAL]: Error executing task on Server
net.minecraft.class_148: Sending packet
        at net.minecraft.class_3244.method_14369(class_3244.java:1176) ~[intermediary-server.jar:?]
        at net.minecraft.class_3244.method_14364(class_3244.java:1164) ~[intermediary-server.jar:?]
        at net.minecraft.class_3225.handler$zbp001$startBlockBreak(class_3225.java:1038) ~[intermediary-server.jar:?]
        at net.minecraft.class_3225.method_14263(class_3225.java) ~[intermediary-server.jar:?]
        at net.minecraft.class_3244.method_12066(class_3244.java:1029) ~[intermediary-server.jar:?]
        at net.minecraft.class_2846.method_12361(class_2846.java:34) ~[intermediary-server.jar:?]
        at net.minecraft.class_2846.method_11054(class_2846.java:8) ~[intermediary-server.jar:?]
        at net.minecraft.class_2600.method_11072(class_2600.java:21) ~[intermediary-server.jar:?]
        at net.minecraft.class_3738.run(class_3738.java:18) ~[intermediary-server.jar:?]
        at net.minecraft.class_1255.method_18859(class_1255.java:151) ~[intermediary-server.jar:?]
        at net.minecraft.class_4093.method_18859(class_4093.java:23) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_24306(MinecraftServer.java:783) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_18859(MinecraftServer.java:167) ~[intermediary-server.jar:?]
        at net.minecraft.class_1255.method_16075(class_1255.java:125) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:765) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:759) ~[intermediary-server.jar:?]
        at net.minecraft.class_1255.method_18857(class_1255.java:134) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:744) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:696) ~[intermediary-server.jar:?]
        at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:274) ~[intermediary-server.jar:?]
        at java.lang.Thread.run(Thread.java:831) [?:?]
Caused by: java.lang.NullPointerException

Additional context
The error does not show when left clicking an empty chest with no other history besides placing the chest.

Add command for viewing player information stored in players table

Is your feature request related to a problem?

It is not related to a problem.

Describe the solution you'd like.

An option in /search to check when a user has logged in/out

Describe alternatives you've considered.

None

Agreements

  • I have searched for and ensured there isn't already an open issue regarding this.
  • I have ensured the feature I'm requesting isn't already in the latest supported mod version.

Other

No response

Add an option on server restart to purge [some amount]

Is your feature request related to a problem?

Official AOF server ledger databases are updates of 35gb, which take a while to complete queries with.

Describe the solution you'd like.

I'd like a way to reduce the amount of time to run queries in recent events.

Describe alternatives you've considered.

There are no alternative. I only want ledger.

Agreements

  • I have searched for and ensured there isn't already an open issue regarding this.
  • I have ensured the feature I'm requesting isn't already in the latest supported mod version.

Other

I <3 all of your work

Incompatible with Cardboard

Expected behavior

can't launch server with ledger and Cardboard

Observed/actual behavior

can't launch server with ledger and Cardboard

Steps/models to reproduce

  1. add ledger and Cardboard #42
  2. launch the server
  3. see the error

What operating system are you running

Windows

Minecraft version

1.17.1

Ledger version

1.1.1+build.362

Logs

https://paste.gg/p/anonymous/2ae8aa4fe09c4e46aac1261326f6a290

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

No response

Ledger 1.1.0 fails to start due to a missing ledger.toml config file

Expected behavior

Ledger 1.1.0 creates a ledger.toml config file on first start and the server starts successfully.

Observed/actual behavior

A runtime exception occurs due to a missing ledger.toml config file.

Steps/models to reproduce

  1. Install Ledger 1.1.0 on a server that never had Ledger installed.
  2. Start the server.

What operating system are you running

Windows

Minecraft version

1.17.1

Ledger version

1.1.0

Logs

https://pastebin.com/KGwRt17b

Agreements

  • I am running the latest version of the mod.
  • My version of Minecraft is supported.
  • I have searched for and ensured there isn't already an open issue regarding this.

Other

Installing Ledger 1.0.2 and starting the server to generate a new config file and then installing Ledger 1.1.0 fixes the issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.