Coder Social home page Coder Social logo

iseeyou's Introduction

ISeeYou

Logo

Also known as ICU

GitHub release GitHub Actions CI License: MIT GitHub all releases

中文 | English

Warning

This plugin can only run on servers using the Leaves core, it does not support other cores!

The developer only guarantees that the latest stable version of the ISeeYou plugin can run normally on the * latest version* of the Leaves core, and does not maintain compatibility with older versions.

Introduction

ISeeYou can use the Replay API provided by the Leaves core to record every move of the player in .mcpr format.

Features

  • Automatic recording: No manual operation is required, the plugin will automatically record all players by default.
  • Flexible configuration: You can set a whitelist and blacklist, as well as the recording path, etc., through the configuration file.
  • Anti-cheat support: Adapted to various anti-cheat plugins, it automatically records when suspicious players are found.
  • Instant Replay: With a command, you can trace back a period of time of gameplay footage and save it in .mcpr format to the server's disk.

Supported Anti-cheat Plugins

Name Status
Themis Anti Cheat ✅ Available
Matrix ✅ Available
Vulcan Anti-Cheat ⚠️ In Public Beta
AC - Negativity ⚠️ In Public Beta
Grim Anticheat ❌ Not Available

Tip

If you want us to add support for more anti-cheat plugins, please create an issue for feedback!

Compatible Minecraft versions

The list of what version of the ISeeYou you'll need to run on a specific version of Leaves is as follows:

Leaves version Compatible versions Latest compatible
version
Minimum Java
version required
to run latest version
1.20.4 v1.0.0 - v1.2.1 v1.2.1 17
1.20.6 v1.2.2 - v1.3.0 v1.3.0 21
1.21 v1.3.0 - v1.3.1 v1.3.1 21
1.21.1 v1.3.2 v1.3.2 21

Instructions for use

Dependencies

Dependencies Optional
Server Leaves Required
Themis Anti Cheat 💡 Optional
Matrix AntiCheat 💡 Optional
Vulcan Anti-Cheat 💡 Optional
AC - Negativity 💡 Optional
Grim Anticheat 💡 Optional

Important

Before installing anti-cheat plugins, please make sure that their required plugins are installed to avoid compatibility issues.

Tutorial

  1. Install the plugin: Place the plugin file in the plugin directory of the Leaves server and restart the server.

  2. Configure settings: Edit the plugins/ISeeYou/config.toml file and adjust the recording parameters and anti-cheat settings as needed.

Config

# Configuration:
deleteTmpFileOnLoad = true # Delete temporary files on load.
pauseInsteadOfStopRecordingOnPlayerQuit = false # Pause recording instead of stopping when player quits.
recordPath = "replay/player/${name}@${uuid}" # Recording storage path template, supports ${name} and ${uuid} variables.
asyncSave = false # Async save recording
bStats = true

[pauseRecordingOnHighSpeed]
enabled = false  # Whether to enable pausing recording on high speed, which pauses recording when the player moves at high speeds.
threshold = 20.0  # Speed threshold to trigger pausing recording on high speed.

[filter]
checkBy = "name"  # Basis for blacklist/whitelist check, can be "name" or "uuid", default is "name", indicating player name.
recordMode = "blacklist"  # Recording mode, either blacklist or whitelist.
blacklist = []  # Blacklist, empty means no players are blocked.
whitelist = []  # Whitelist, empty means no players are recorded.

[clearOutdatedRecordFile]
enabled = false  # Whether to enable cleaning function.
interval = 24  # Cleaning interval (hours).
days = 7  # Number of days to retain outdated recording files.

[recordSuspiciousPlayer]
enableThemisIntegration = false  # Whether to enable recording of suspicious players monitored by Themis reports.
enableMatrixIntegration = false  # Whether to enable recording of suspicious players monitored by Matrix reports.
enableVulcanIntegration = false  # Whether to enable recording of suspicious players monitored by Vulcan reports.
enableNegativityIntegration = false  # Whether to enable recording of suspicious players monitored by Negativity reports.
enableGrimACIntegration = false  # Whether to enable recording of suspicious players monitored by GrimAC reports.
recordMinutes = 5  # Recording time for suspicious players (minutes).
recordPath = "replay/suspicious/${name}@${uuid}"  # Suspicious player recording file path template, supports ${name} and ${uuid} variables.

# [instantReplay] Instant replay settings
[instantReplay]
enabled = false  # Whether to enable instant replay functionality.
replayMinutes = 5  # Specifies how many minutes of gameplay can be traced back (minutes).
createMinutes = 1  # Specifies how often a camera is created (minutes).
recordPath = "replay/instant/${name}@${uuid}"  # Storage path template for instant replay recordings, supports ${name} and ${uuid} variables.

Warning

Enabling instant replay, recording suspicious players, and other features may increase server performance consumption.

Commands

/photographer create <name> and /instantreplay commands can only be executed by players in the game, not in the server console.

/photographer create <name> [location] command can be executed in the console.

Before using the /instantreplay command, make sure that the corresponding feature is enabled in the plugin configuration file.

Command Description Example
photographer create <name> [location] Create a camera /photographer create MyCamera
/photographer create MyCamera <x> <y> <z>
- <name>: Camera name, limited to 5 to 16 characters
- [location] (optional): Camera location, format is x y z coordinates.
If not specified, it defaults to the current position of the executing player.
photographer remove <name> Remove a camera /photographer remove MyCamera
- <name>: The name of the camera to remove
photographer list Display all cameras in the list /photographer list
instantreplay Create an instant replay recording for the executing player /instantreplay

Download

Build from scratch

1. Clone the project source code

Use the following command to clone the project to your local environment:

git clone https://github.com/MC-XiaoHei/ISeeYou.git

2. Compile and package

Navigate to the project root directory and execute the following command to build the jar package:

./gradlew shadowJar

After compilation is complete, you will find the output file named ISeeYou.jar in the build/libs directory.

Author Information

  • Core Dev: MC-XiaoHei, wrote most of the code
  • Core Dev: CerealAxis, helped implement automatic cleaning of expired recordings, Matrix adaptation functionality, and wrote the README
  • Contributor: Cranyozen, helped complete the automatic build CI
  • Contributor: Bluemangoo, fixed tons of typos in the README

Precautions

  • This plugin can only run under the Leaves (and its downstream) server environment, and does not support other Spigot and its downstream cores (such as Paper, Purpur, etc.).
  • Please read and configure the config.toml file carefully before using the plugin to ensure that the plugin can run normally.
  • Although there are currently no bug reports caused by reload, try not to use plugins like Plugman to hot reload this plugin, which may cause many unknown problems!

Thanks for the support

Thank you for using the ISeeYou plugin! If you encounter any problems or have any suggestions during use, please feel free to contact the author or submit an issue to the GitHub repository.

Statistics

iseeyou's People

Contributors

mc-xiaohei avatar cerealaxis avatar bluemangoo avatar cranyozen avatar neokoni avatar

Stargazers

 avatar yanshiqwq avatar mc506lw avatar Eric.乐乐 avatar  avatar  avatar Angelsquare avatar  avatar huajibenji avatar Science_ch avatar Percival Zheng avatar Dave avatar  avatar  avatar Taketoday avatar IceBrick avatar John Richard avatar Wh1te0 avatar Aw Cat avatar  avatar 驿站 avatar  avatar  avatar  avatar  avatar  avatar Fortern avatar  avatar  avatar CCMT avatar M2ke4U avatar Nostal Yuu avatar  avatar  avatar  avatar vltown avatar 果冻 avatar WKK avatar Jiuai avatar 浪踪 avatar  avatar  avatar  avatar NatJerry avatar  avatar Destino avatar

Watchers

 avatar  avatar

iseeyou's Issues

ISeeYou疑似与Terra冲突

ISeeYou版本为:1.2.1
terra版本为:6.4.3
服务端版本为:leaves1.20.4-e7c14b8
经过测试 两个插件在一起时 主世界的要塞(可能有其他结构也无法生成 暂时只知道要塞)无法生成,使用locate命令和末影之眼都无法定位到要塞,将iseeyou删除就正常了 不知道是什么奇奇怪怪的问题()

自动清理过期录像时服务器无响应

即使没有过期录像仍然会触发,之后服务器自动关机
2024-03-27-1.log

以下是config.toml的内容

deleteTmpFileOnLoad = true
pauseInsteadOfStopRecordingOnPlayerQuit = false
recordPath = "replay/player/${name}@${uuid}"

[pauseRecordingOnHighSpeed]
enabled = false
threshold = 20.0

[filter]
checkBy = "name"
recordMode = "blacklist"
blacklist = []

[clearOutdatedRecordFile]
enabled = true
days = 5

[recordSuspiciousPlayer]
enableThemisIntegration = false
enableMatrixIntegration = false
recordMinutes = 10
recordPath = "replay/suspicious/Themis/${name}@${uuid}"

请求兼容Luminol Folia核心

请求对Luminol核心进行兼容适配,Luminol核心同样拥有ReplayMod api 我想在Folia服务器中也能实现如同leaves中同样的作弊监控,也能为服务器后续提供更良好的作弊检测

运行报错

核心是1.20.4,iseeyou版本是1.2.1
完整日志:https://mclo.gs/k1UqDGj
插件列表:

[00:51:24] [Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO LEAVES - THIS IS NOT A BUG OR A CRASH  - git-Leaves-"e7c14b8" (MC: 1.20.4) ---
[00:51:24] [Paper Watchdog Thread/ERROR]: The server has not responded for 10 seconds! Creating thread dump
[00:51:24] [Paper Watchdog Thread/ERROR]: ------------------------------
[00:51:24] [Paper Watchdog Thread/ERROR]: Server thread dump (Look for plugins here before reporting to Leaves!):
[00:51:24] [Paper Watchdog Thread/ERROR]: ------------------------------
[00:51:24] [Paper Watchdog Thread/ERROR]: Current Thread: Server thread
[00:51:24] [Paper Watchdog Thread/ERROR]: 	PID: 80 | Suspended: false | Native: false | State: WAITING
[00:51:24] [Paper Watchdog Thread/ERROR]: 	Stack:
[00:51:24] [Paper Watchdog Thread/ERROR]: 		[email protected]/jdk.internal.misc.Unsafe.park(Native Method)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		[email protected]/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		[email protected]/java.util.concurrent.CompletableFuture$Signaller.block(CompletableFuture.java:1864)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		[email protected]/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		[email protected]/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		[email protected]/java.util.concurrent.CompletableFuture.waitingGet(CompletableFuture.java:1898)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		[email protected]/java.util.concurrent.CompletableFuture.join(CompletableFuture.java:2117)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		top.leavesmc.leaves.replay.ServerPhotographer.remove(ServerPhotographer.java:141)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		top.leavesmc.leaves.entity.CraftPhotographer.stopRecording(CraftPhotographer.java:31)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		top.leavesmc.leaves.entity.CraftPhotographer.stopRecording(CraftPhotographer.java:26)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		[玩家录像]ISeeYou-1.2.1-all.jar//cn.xor7.iseeyou.EventListener.onPlayerQuit(EventListener.kt:117)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor666.execute(Unknown Source)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:59)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:615)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.players.PlayerList.remove(PlayerList.java:794)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.players.PlayerList.remove(PlayerList.java:778)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.network.ServerGamePacketListenerImpl.removePlayerFromWorld(ServerGamePacketListenerImpl.java:2103)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.network.ServerGamePacketListenerImpl.onDisconnect(ServerGamePacketListenerImpl.java:2083)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.network.ServerGamePacketListenerImpl.onDisconnect(ServerGamePacketListenerImpl.java:2070)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.network.Connection.handleDisconnection(Connection.java:847)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:254)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1732)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:451)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1519)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1226)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:314)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		net.minecraft.server.MinecraftServer$$Lambda/0x0000025930c3c6d0.run(Unknown Source)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		[email protected]/java.lang.Thread.runWith(Thread.java:1596)
[00:51:24] [Paper Watchdog Thread/ERROR]: 		[email protected]/java.lang.Thread.run(Thread.java:1583)
[00:51:24] [Paper Watchdog Thread/ERROR]: ------------------------------
[00:51:24] [Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO LEAVES - THIS IS NOT A BUG OR A CRASH ---

添加readme.md

添加readme.md
这样可以让别人知道该插件的用途

代码重构

现在的代码结构太shit了(
计划进行重构
coming s∞n

装入ICU后游戏内Tab补全无法使用,所有命令显示红色

Leaves 版本 1.21
ICU版本 1.3.1
装完ICU进游戏,发现登录命令/l 显示红色,但正确输入仍能登陆成功。
然后发现所有命令都没有补全,并且输入任何命令聊天框都是红色的错误提示,盲打输入正确仍能执行。
删掉ICU后恢复。

最新的1.3.2版本无法在leaves1.20.4上运行

完整日志:
Starting org.bukkit.craftbukkit.Main
*** Warning, you've not updated in a while! ***
*** Please download a new build as per instructions from https://leavesmc.org/downloads/leaves ***
System Info: Java 21 (Java HotSpot(TM) 64-Bit Server VM 21.0.3+7-LTS-152) Host: Windows 10 10.0 (amd64)
Loading libraries, please wait...
[18:20:33 WARN]: [oshi.driver.windows.perfmon.PerfmonDisabled] Invalid registry value type detected for PerfOS counters. Should be REG_DWORD. Ignoring: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfOS\Performance\Disable Performance Counters.
[18:20:36 INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD]
[18:20:38 INFO]: Loaded 1174 recipes
[18:20:38 INFO]: Loaded 1271 advancements
[18:20:38 INFO]: Starting minecraft server version 1.20.4
[18:20:38 INFO]: Loading properties
[18:20:38 INFO]: This server is running Leaves version git-Leaves-"a4724ba" (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: a4724ba)
[18:20:39 INFO]: Server Ping Player Sample Count: 12
[18:20:39 INFO]: Using 4 threads for Netty based IO
[18:20:39 INFO]: [ChunkTaskScheduler] Chunk system is using 1 I/O threads, 4 worker threads, and gen parallelism of 4 threads
[18:20:39 INFO]: Default game type: SURVIVAL
[18:20:39 INFO]: Generating keypair
[18:20:39 INFO]: Starting Minecraft server on *:25567
[18:20:39 INFO]: Using default channel type
[18:20:39 INFO]: Paper: Using Java compression from Velocity.
[18:20:39 INFO]: Paper: Using Java cipher from Velocity.
[18:20:39 INFO]: [ISeeYou] Loading server plugin ISeeYou v1.3.2
[18:20:39 ERROR]: [ISeeYou] Error initializing plugin 'ISeeYou-1.3.2-all.jar' in folder 'plugins' (Is it up to date?)
java.lang.NoClassDefFoundError: net/minecraft/core/RegistryAccess
at cn.xor7.iseeyou.commandapi.CommandAPIVersionHandler.getPlatform(CommandAPIVersionHandler.java:68) ~[ISeeYou-1.3.2-all.jar:?]
at cn.xor7.iseeyou.commandapi.CommandAPI.onLoad(CommandAPI.java:112) ~[ISeeYou-1.3.2-all.jar:?]
at cn.xor7.iseeyou.ISeeYou.onLoad(ISeeYou.kt:46) ~[ISeeYou-1.3.2-all.jar:?]
at io.papermc.paper.plugin.storage.ServerPluginProviderStorage.processProvided(ServerPluginProviderStorage.java:59) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at io.papermc.paper.plugin.storage.ServerPluginProviderStorage.processProvided(ServerPluginProviderStorage.java:18) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:39) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:36) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.loadPlugins(CraftServer.java:512) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:278) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1130) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:314) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.ClassNotFoundException: net.minecraft.core.RegistryAccess
at io.papermc.paper.plugin.entrypoint.classloader.PaperPluginClassLoader.loadClass(PaperPluginClassLoader.java:142) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at io.papermc.paper.plugin.entrypoint.classloader.PaperPluginClassLoader.loadClass(PaperPluginClassLoader.java:103) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?]
... 12 more
[18:20:39 INFO]: Server permissions file permissions.yml is empty, ignoring it
[18:20:39 WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
[18:20:39 WARN]: The server will make no attempt to authenticate usernames. Beware.
[18:20:39 WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.
[18:20:39 WARN]: To change this, set "online-mode" to "true" in the server.properties file.
[18:20:39 INFO]: Preparing level "world"
[18:20:39 INFO]: Preparing start region for dimension minecraft:overworld
[18:20:40 INFO]: Time elapsed: 913 ms
[18:20:40 INFO]: Preparing start region for dimension minecraft:the_nether
[18:20:40 INFO]: Time elapsed: 40 ms
[18:20:40 INFO]: Preparing start region for dimension minecraft:the_end
[18:20:41 INFO]: Time elapsed: 122 ms
[18:20:41 INFO]: [ISeeYou] Enabling ISeeYou v1.3.2
[18:20:41 ERROR]: Error occurred while enabling ISeeYou v1.3.2 (Is it up to date?)
java.lang.IllegalStateException: Tried to access CommandAPIHandler instance, but it was null! Are you using CommandAPI features before calling CommandAPI#onLoad?
at cn.xor7.iseeyou.commandapi.CommandAPIHandler.getInstance(CommandAPIHandler.java:172) ~[ISeeYou-1.3.2-all.jar:?]
at cn.xor7.iseeyou.commandapi.CommandAPI.onEnable(CommandAPI.java:152) ~[ISeeYou-1.3.2-all.jar:?]
at cn.xor7.iseeyou.ISeeYou.onEnable(ISeeYou.kt:54) ~[ISeeYou-1.3.2-all.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:287) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:188) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugin(CraftServer.java:644) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.enablePlugins(CraftServer.java:555) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:669) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:426) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:313) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1130) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:314) ~[leaves-1.20.4.jar:git-Leaves-"a4724ba"]
at java.lang.Thread.run(Thread.java:1583) ~[?:?]
[18:20:41 INFO]: [ISeeYou] Disabling ISeeYou v1.3.2
[18:20:41 INFO]: Running delayed init tasks
[18:20:41 INFO]: Done (2.673s)! For help, type "help"
插件只有icu一个

与反作弊配合

icu于类似Vulcan等反作弊中,是否能添加反作弊检测疑似作弊行为之后,icu自动标记这个玩家的录像,并在服务端中单独创建出一个文件夹来管理这些录像

可能导致玩家无法捡起物品和无法搭方块的Bug

Bug

  1. 玩家捡起物品后,物品没有出现在背包,而是直接消失
  2. 玩家无法在脚下搭方块。

猜测

  1. 是因为录制用的假人捡起物品/占了方块的位置?
  2. 两个Bug都是偶尔出现,不确定和服务器性能有无关联,甚至不能完全确定是ISeeYou所致(尤其第二条Bug)。
  3. Bug发生时后台未见ISeeYou报错。

运行报错

开启了对themis的支持 服务端无限报错
[13:28:34 ERROR]: Could not pass event PlayerMoveEvent to ISeeYou v1.1.3
java.lang.NullPointerException: null
at cn.xor7.iseeyou.EventListener.onPlayerMove(EventListener.kt:82) ~[ISeeYou-1.1.3-all.jar:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor370.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:53) ~[leaves-1.20.4.jar:git-Leaves-"da47a6f"]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[leaves-1.20.4.jar:git-Leaves-"da47a6f"]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:615) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.handleMovePlayer(ServerGamePacketListenerImpl.java:1572) ~[?:?]
at net.minecraft.network.protocol.game.ServerboundMovePlayerPacket.handle(ServerboundMovePlayerPacket.java:29) ~[?:?]
at net.minecraft.network.protocol.game.ServerboundMovePlayerPacket$Pos.handle(ServerboundMovePlayerPacket.java:66) ~[?:?]
at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:53) ~[?:?]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[leaves-1.20.4.jar:git-Leaves-"da47a6f"]
at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1450) ~[leaves-1.20.4.jar:git-Leaves-"da47a6f"]
at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:189) ~[leaves-1.20.4.jar:git-Leaves-"da47a6f"]
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1427) ~[leaves-1.20.4.jar:git-Leaves-"da47a6f"]
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1355) ~[leaves-1.20.4.jar:git-Leaves-"da47a6f"]
at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1333) ~[leaves-1.20.4.jar:git-Leaves-"da47a6f"]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1222) ~[leaves-1.20.4.jar:git-Leaves-"da47a6f"]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:314) ~[leaves-1.20.4.jar:git-Leaves-"da47a6f"]
at java.lang.Thread.run(Thread.java:833) ~[?:?]

WorldGuard 疑似跟 ISeeYou 冲突

[15:19:55 ERROR]: Could not pass event PlayerTeleportEvent to WorldGuard v7.0.9+5934e49
com.google.common.util.concurrent.UncheckedExecutionException: me.lucko.luckperms.bukkit.vault.ServerThreadLookupException: A Vault API request has been made on the main server thread that LuckPerms cannot safely respond to.
This is NOT a bug - please do not report it to LuckPerms.
Instead, please carefully read the information given below.

LuckPerms cannot respond to the request because to do so:
- it needs to lookup user data for '0e8ef417-fae9-4106-9cab-d70a4b09b9ea' (an offline player) from the database

Performing this lookup on the main server thread would cause your server to lag.
There are two solutions to this problem:
  a) Ask the author of the plugin making the request to perform Vault calls for
     offline players "asynchronously" (using the scheduler). Additionally, prefer
     using the methods that accept 'Player' or 'OfflinePlayer' instead of usernames.
     You should be able to identify the plugin making the request in the trace below.
  b) As a server admin, you can disable this exception by setting 'vault-unsafe-lookups'
     to true in the LuckPerms configuration file. However, please use this only as
     a last resort.
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2086) ~[guava-32.1.2-jre.jar:?]
        at com.google.common.cache.LocalCache.get(LocalCache.java:4012) ~[guava-32.1.2-jre.jar:?]
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4035) ~[guava-32.1.2-jre.jar:?]
        at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5013) ~[guava-32.1.2-jre.jar:?]
        at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5020) ~[guava-32.1.2-jre.jar:?]
        at com.sk89q.worldguard.session.AbstractSessionManager.hasBypass(AbstractSessionManager.java:149) ~[worldguard-bukkit-7.0.9-dist.jar:?]
        at com.sk89q.worldguard.bukkit.session.BukkitSessionManager.hasBypass(BukkitSessionManager.java:86) ~[worldguard-bukkit-7.0.9-dist.jar:?]
        at com.sk89q.worldguard.session.handler.EntryFlag.onCrossBoundary(EntryFlag.java:55) ~[worldguard-bukkit-7.0.9-dist.jar:?]
        at com.sk89q.worldguard.session.Session.testMoveTo(Session.java:235) ~[worldguard-bukkit-7.0.9-dist.jar:?]
        at com.sk89q.worldguard.session.Session.testMoveTo(Session.java:195) ~[worldguard-bukkit-7.0.9-dist.jar:?]
        at com.sk89q.worldguard.bukkit.listener.WorldGuardPlayerListener.onPlayerTeleport(WorldGuardPlayerListener.java:404) ~[worldguard-bukkit-7.0.9-dist.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor51.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:59) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:615) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.teleport(ServerGamePacketListenerImpl.java:1714) ~[?:?]
        at net.minecraft.server.level.ServerPlayer.teleportTo(ServerPlayer.java:2067) ~[?:?]
        at net.minecraft.server.level.ServerPlayer.setCamera(ServerPlayer.java:2317) ~[?:?]
        at top.leavesmc.leaves.replay.ServerPhotographer.setFollowPlayer(ServerPhotographer.java:147) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at top.leavesmc.leaves.entity.CraftPhotographer.setFollowPlayer(CraftPhotographer.java:52) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at cn.xor7.iseeyou.EventListener.onPlayerJoin(EventListener.kt:77) ~[ISeeYou-1.2.1-all.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor1201.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:59) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:615) ~[leaves-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at net.minecraft.server.players.PlayerList.placeNewPlayer(PlayerList.java:465) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.server.network.ServerConfigurationPacketListenerImpl.handleConfigurationFinished(ServerConfigurationPacketListenerImpl.java:134) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.network.protocol.configuration.ServerboundFinishConfigurationPacket.handle(ServerboundFinishConfigurationPacket.java:18) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.network.protocol.configuration.ServerboundFinishConfigurationPacket.a(ServerboundFinishConfigurationPacket.java:9) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:53) ~[?:?]
        at net.minecraft.server.TickTask.run(TickTask.java:18) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:149) ~[?:?]
        at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
        at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1460) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:189) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:123) ~[?:?]
        at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1437) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1365) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:133) ~[?:?]
        at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1343) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1232) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:314) ~[leaves-1.20.4.jar:git-Leaves-"e7c14b8"]
        at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: me.lucko.luckperms.bukkit.vault.ServerThreadLookupException: A Vault API request has been made on the main server thread that LuckPerms cannot safely respond to.
This is NOT a bug - please do not report it to LuckPerms.
Instead, please carefully read the information given below.

LuckPerms cannot respond to the request because to do so:
- it needs to lookup user data for '0e8ef417-fae9-4106-9cab-d70a4b09b9ea' (an offline player) from the database

Performing this lookup on the main server thread would cause your server to lag.
There are two solutions to this problem:
  a) Ask the author of the plugin making the request to perform Vault calls for
     offline players "asynchronously" (using the scheduler). Additionally, prefer
     using the methods that accept 'Player' or 'OfflinePlayer' instead of usernames.
     You should be able to identify the plugin making the request in the trace below.
  b) As a server admin, you can disable this exception by setting 'vault-unsafe-lookups'
     to true in the LuckPerms configuration file. However, please use this only as
     a last resort.
        at me.lucko.luckperms.bukkit.vault.LuckPermsVaultPermission.lookupUser(LuckPermsVaultPermission.java:153) ~[?:?]
        at me.lucko.luckperms.bukkit.vault.LuckPermsVaultPermission.userHasPermission(LuckPermsVaultPermission.java:172) ~[?:?]
        at me.lucko.luckperms.bukkit.vault.AbstractVaultPermission.playerHas(AbstractVaultPermission.java:150) ~[?:?]
        at com.sk89q.wepif.VaultResolver.hasPermission(VaultResolver.java:100) ~[worldedit-bukkit-7.3.1.jar:?]
        at com.sk89q.wepif.PermissionsResolverManager.hasPermission(PermissionsResolverManager.java:170) ~[worldedit-bukkit-7.3.1.jar:?]
        at com.sk89q.worldguard.bukkit.WorldGuardPlugin.hasPermission(WorldGuardPlugin.java:360) ~[worldguard-bukkit-7.0.9-dist.jar:?]
        at com.sk89q.worldguard.bukkit.BukkitPlayer.hasPermission(BukkitPlayer.java:219) ~[worldguard-bukkit-7.0.9-dist.jar:?]
        at com.sk89q.worldguard.session.AbstractSessionManager.lambda$static$0(AbstractSessionManager.java:62) ~[worldguard-bukkit-7.0.9-dist.jar:?]
        at com.sk89q.worldguard.session.AbstractSessionManager.lambda$new$1(AbstractSessionManager.java:68) ~[worldguard-bukkit-7.0.9-dist.jar:?]
        at com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:169) ~[guava-32.1.2-jre.jar:?]
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3571) ~[guava-32.1.2-jre.jar:?]
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2313) ~[guava-32.1.2-jre.jar:?]
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2190) ~[guava-32.1.2-jre.jar:?]
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2080) ~[guava-32.1.2-jre.jar:?]
        ... 46 more

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.