fix: ci
This commit is contained in:
parent
afb0e82713
commit
e1fb278af0
4
.github/workflows/rust.yml
vendored
4
.github/workflows/rust.yml
vendored
@ -74,7 +74,7 @@ jobs:
|
||||
- run: rustup component add clippy
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
- name: Download JAR
|
||||
uses: actions/download-artifact@v7
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: patchbukkit-jar
|
||||
path: java/patchbukkit/build/libs/
|
||||
@ -170,7 +170,7 @@ jobs:
|
||||
Windows) cp rust/target/release/*.dll "dist/patchbukkit-${{ runner.arch }}-${{ runner.os }}.dll" ;;
|
||||
esac
|
||||
- name: Export artifacts
|
||||
uses: actions/upload-artifact@v6
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: patchbukkit-${{ runner.arch }}-${{ runner.os }}
|
||||
compression-level: 9
|
||||
|
||||
12
rust/Cargo.lock
generated
12
rust/Cargo.lock
generated
@ -1794,9 +1794,9 @@ checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b"
|
||||
|
||||
[[package]]
|
||||
name = "granit-parser"
|
||||
version = "1.0.1"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7c92814c286f45b5ed1498ce9547bc9637b473eba7037f8aee6a4d5a3c1e051c"
|
||||
checksum = "4ccd1be9ebf2bd5520dbfcfb72b70ef492f654061299a097056f3e73410e38ec"
|
||||
dependencies = [
|
||||
"arraydeque",
|
||||
"smallvec",
|
||||
@ -4266,9 +4266,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "serde-saphyr"
|
||||
version = "1.0.1"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "af2c6921c8ce48fb1b052b457619d008834039d80325992ed3bc55bbe6c155ad"
|
||||
checksum = "a1ec1f5cac0eb96063c64b28705255a7ed6e7d77f95c1d25e9f8b8c928006ce1"
|
||||
dependencies = [
|
||||
"annotate-snippets",
|
||||
"base64 0.23.1",
|
||||
@ -5136,9 +5136,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
||||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "1.24.0"
|
||||
version = "1.24.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239"
|
||||
checksum = "2cefc03fd367c0c6d4305de1b312cf00248c4114f4a0418ce6a6af769e3b0bd9"
|
||||
dependencies = [
|
||||
"getrandom 0.4.3",
|
||||
"js-sys",
|
||||
|
||||
@ -27,11 +27,11 @@ walkdir = "2"
|
||||
zip = "8.6"
|
||||
|
||||
anyhow = "1.0"
|
||||
uuid = "1.24.0"
|
||||
uuid = "1.24.1"
|
||||
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
serde-saphyr = "1.0.1"
|
||||
serde-saphyr = "1.1.0"
|
||||
|
||||
rand = { git = "https://github.com/rust-random/rand"}
|
||||
prost = "0.14"
|
||||
|
||||
@ -32,8 +32,19 @@ pub fn setup_directories(server: &Context) -> Result<PatchBukkitDirectories, Str
|
||||
let patchbukkit_jar_dest = jassets.join("patchbukkit.jar");
|
||||
|
||||
let candidates = [
|
||||
server_root.join("java").join("patchbukkit").join("build").join("libs").join("patchbukkit.jar"),
|
||||
server_root.join("patchbukkit").join("java").join("patchbukkit").join("build").join("libs").join("patchbukkit.jar"),
|
||||
server_root
|
||||
.join("java")
|
||||
.join("patchbukkit")
|
||||
.join("build")
|
||||
.join("libs")
|
||||
.join("patchbukkit.jar"),
|
||||
server_root
|
||||
.join("patchbukkit")
|
||||
.join("java")
|
||||
.join("patchbukkit")
|
||||
.join("build")
|
||||
.join("libs")
|
||||
.join("patchbukkit.jar"),
|
||||
];
|
||||
|
||||
for candidate in &candidates {
|
||||
|
||||
@ -348,7 +348,6 @@ impl PatchBukkitEvent for pumpkin::plugin::player::player_move::PlayerMoveEvent
|
||||
}
|
||||
Some(())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
impl PatchBukkitEvent for pumpkin::plugin::player::player_chat::PlayerChatEvent {
|
||||
|
||||
@ -22,7 +22,10 @@ pub fn discover_jar_files(plugin_folder: &Path) -> impl Iterator<Item = PathBuf>
|
||||
.canonicalize()
|
||||
.map_err(|e| tracing::error!("Canonicalize error: {e:?}"))
|
||||
.ok()?;
|
||||
if path.components().any(|c| c.as_os_str() == "patchbukkit-libs") {
|
||||
if path
|
||||
.components()
|
||||
.any(|c| c.as_os_str() == "patchbukkit-libs")
|
||||
{
|
||||
None
|
||||
} else {
|
||||
Some(path)
|
||||
@ -71,53 +74,53 @@ pub fn read_libraries_from_jar<P: AsRef<Path>>(jar_path: P) -> Vec<String> {
|
||||
// 1. paper-libraries.json
|
||||
if let Ok(mut file) = archive.by_name("paper-libraries.json") {
|
||||
let mut content = String::new();
|
||||
if file.read_to_string(&mut content).is_ok() {
|
||||
if let Ok(val) = serde_json::from_str::<serde_json::Value>(&content) {
|
||||
if let Some(repos) = val.get("repositories") {
|
||||
if let Some(map) = repos.as_object() {
|
||||
for (_, v) in map {
|
||||
if let Some(url) = v.as_str() {
|
||||
let repo_entry = format!("repo:{url}");
|
||||
if !libraries.contains(&repo_entry) {
|
||||
libraries.push(repo_entry);
|
||||
}
|
||||
if file.read_to_string(&mut content).is_ok()
|
||||
&& let Ok(val) = serde_json::from_str::<serde_json::Value>(&content)
|
||||
{
|
||||
if let Some(repos) = val.get("repositories") {
|
||||
if let Some(map) = repos.as_object() {
|
||||
for (_, v) in map {
|
||||
if let Some(url) = v.as_str() {
|
||||
let repo_entry = format!("repo:{url}");
|
||||
if !libraries.contains(&repo_entry) {
|
||||
libraries.push(repo_entry);
|
||||
}
|
||||
}
|
||||
} else if let Some(arr) = repos.as_array() {
|
||||
for item in arr {
|
||||
if let Some(url) = item.as_str() {
|
||||
let repo_entry = format!("repo:{url}");
|
||||
if !libraries.contains(&repo_entry) {
|
||||
libraries.push(repo_entry);
|
||||
}
|
||||
} else if let Some(obj) = item.as_object() {
|
||||
if let Some(url) = obj.get("url").and_then(|u| u.as_str()) {
|
||||
let repo_entry = format!("repo:{url}");
|
||||
if !libraries.contains(&repo_entry) {
|
||||
libraries.push(repo_entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if let Some(arr) = repos.as_array() {
|
||||
for item in arr {
|
||||
if let Some(url) = item.as_str() {
|
||||
let repo_entry = format!("repo:{url}");
|
||||
if !libraries.contains(&repo_entry) {
|
||||
libraries.push(repo_entry);
|
||||
}
|
||||
} else if let Some(obj) = item.as_object()
|
||||
&& let Some(url) = obj.get("url").and_then(|u| u.as_str())
|
||||
{
|
||||
let repo_entry = format!("repo:{url}");
|
||||
if !libraries.contains(&repo_entry) {
|
||||
libraries.push(repo_entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(deps) = val.get("dependencies") {
|
||||
if let Some(arr) = deps.as_array() {
|
||||
for item in arr {
|
||||
if let Some(s) = item.as_str() {
|
||||
if !libraries.contains(&s.to_string()) {
|
||||
libraries.push(s.to_string());
|
||||
}
|
||||
}
|
||||
if let Some(deps) = val.get("dependencies") {
|
||||
if let Some(arr) = deps.as_array() {
|
||||
for item in arr {
|
||||
if let Some(s) = item.as_str()
|
||||
&& !libraries.contains(&s.to_string())
|
||||
{
|
||||
libraries.push(s.to_string());
|
||||
}
|
||||
} else if let Some(map) = deps.as_object() {
|
||||
for (k, v) in map {
|
||||
if let Some(ver) = v.as_str() {
|
||||
let coord = format!("{k}:{ver}");
|
||||
if !libraries.contains(&coord) {
|
||||
libraries.push(coord);
|
||||
}
|
||||
}
|
||||
} else if let Some(map) = deps.as_object() {
|
||||
for (k, v) in map {
|
||||
if let Some(ver) = v.as_str() {
|
||||
let coord = format!("{k}:{ver}");
|
||||
if !libraries.contains(&coord) {
|
||||
libraries.push(coord);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -132,10 +135,11 @@ pub fn read_libraries_from_jar<P: AsRef<Path>>(jar_path: P) -> Vec<String> {
|
||||
if file.read_to_string(&mut content).is_ok() {
|
||||
for line in content.lines() {
|
||||
let trimmed = line.trim();
|
||||
if !trimmed.is_empty() && !trimmed.starts_with('#') {
|
||||
if !libraries.contains(&trimmed.to_string()) {
|
||||
libraries.push(trimmed.to_string());
|
||||
}
|
||||
if !trimmed.is_empty()
|
||||
&& !trimmed.starts_with('#')
|
||||
&& !libraries.contains(&trimmed.to_string())
|
||||
{
|
||||
libraries.push(trimmed.to_string());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -159,7 +163,8 @@ mod tests {
|
||||
let file = File::create(&jar_path).unwrap();
|
||||
let mut zip = zip::ZipWriter::new(file);
|
||||
|
||||
zip.start_file("paper-libraries.json", SimpleFileOptions::default()).unwrap();
|
||||
zip.start_file("paper-libraries.json", SimpleFileOptions::default())
|
||||
.unwrap();
|
||||
let json = r#"{
|
||||
"repositories": {
|
||||
"miraculixx": "https://repo.miraculixx.de"
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
use pumpkin_util::permission::{Permission, PermissionDefault};
|
||||
|
||||
use crate::{
|
||||
commands::init_java_command,
|
||||
proto::patchbukkit::command::RegisterCommandRequest,
|
||||
};
|
||||
use crate::{commands::init_java_command, proto::patchbukkit::command::RegisterCommandRequest};
|
||||
|
||||
pub fn ffi_native_bridge_register_command_impl(request: RegisterCommandRequest) -> Option<()> {
|
||||
let context = super::CALLBACK_CONTEXT.get()?;
|
||||
@ -37,12 +34,7 @@ pub fn ffi_native_bridge_register_command_impl(request: RegisterCommandRequest)
|
||||
}
|
||||
}
|
||||
|
||||
let node = init_java_command(
|
||||
cmd_name.clone(),
|
||||
command_tx,
|
||||
names,
|
||||
description,
|
||||
);
|
||||
let node = init_java_command(cmd_name.clone(), command_tx, names, description);
|
||||
|
||||
let clean_perm = cmd_name.trim_start_matches('/');
|
||||
let permission = format!("patchbukkit:command.{clean_perm}");
|
||||
|
||||
@ -157,9 +157,8 @@ pub fn ffi_native_bridge_is_op_impl(
|
||||
|
||||
if !is_op {
|
||||
let op_config = tokio::task::block_in_place(|| {
|
||||
ctx.runtime.block_on(async {
|
||||
ctx.plugin_context.server.data.operator_config.read().await
|
||||
})
|
||||
ctx.runtime
|
||||
.block_on(async { ctx.plugin_context.server.data.operator_config.read().await })
|
||||
});
|
||||
if op_config.get_entry(&player_uuid).is_some() {
|
||||
is_op = true;
|
||||
@ -170,13 +169,11 @@ pub fn ffi_native_bridge_is_op_impl(
|
||||
})
|
||||
.unwrap_or_else(|| {
|
||||
let op_config = tokio::task::block_in_place(|| {
|
||||
ctx.runtime.block_on(async {
|
||||
ctx.plugin_context.server.data.operator_config.read().await
|
||||
})
|
||||
ctx.runtime
|
||||
.block_on(async { ctx.plugin_context.server.data.operator_config.read().await })
|
||||
});
|
||||
op_config.get_entry(&player_uuid).is_some()
|
||||
});
|
||||
|
||||
Some(crate::proto::patchbukkit::entity::IsOpResponse { is_op })
|
||||
}
|
||||
|
||||
|
||||
@ -60,11 +60,7 @@ pub fn ffi_native_bridge_set_block_data_impl(request: SetBlockDataRequest) -> Op
|
||||
|
||||
ctx.runtime.spawn(async move {
|
||||
world
|
||||
.set_block_state(
|
||||
&pos,
|
||||
state_id,
|
||||
pumpkin::world::BlockFlags::NOTIFY_ALL,
|
||||
)
|
||||
.set_block_state(&pos, state_id, pumpkin::world::BlockFlags::NOTIFY_ALL)
|
||||
.await;
|
||||
});
|
||||
|
||||
|
||||
@ -163,7 +163,10 @@ impl CommandManager {
|
||||
],
|
||||
) {
|
||||
Ok(inst) => {
|
||||
if jvm.invoke(&inst, "getName", InvocationArg::empty()).is_err() {
|
||||
if jvm
|
||||
.invoke(&inst, "getName", InvocationArg::empty())
|
||||
.is_err()
|
||||
{
|
||||
tracing::error!(
|
||||
"Failed to create PluginCommand for {}: Java returned null",
|
||||
cmd_name
|
||||
|
||||
@ -224,10 +224,10 @@ impl PluginManager {
|
||||
for item in arr {
|
||||
if let Some(s) = item.as_str() {
|
||||
libraries.push(format!("repo:{s}"));
|
||||
} else if let Some(obj) = item.as_object() {
|
||||
if let Some(u) = obj.get("url").and_then(|v| v.as_str()) {
|
||||
libraries.push(format!("repo:{u}"));
|
||||
}
|
||||
} else if let Some(obj) = item.as_object()
|
||||
&& let Some(u) = obj.get("url").and_then(|v| v.as_str())
|
||||
{
|
||||
libraries.push(format!("repo:{u}"));
|
||||
}
|
||||
}
|
||||
} else if let Some(map) = repos.as_object() {
|
||||
|
||||
@ -22,10 +22,7 @@ use tokio::sync::{
|
||||
use crate::{
|
||||
config::patchbukkit::PatchBukkitConfig,
|
||||
java::{
|
||||
jvm::{
|
||||
commands::JvmCommand,
|
||||
worker::JvmWorker,
|
||||
},
|
||||
jvm::{commands::JvmCommand, worker::JvmWorker},
|
||||
resources::setup_j4rs,
|
||||
},
|
||||
};
|
||||
@ -42,8 +39,6 @@ async fn on_load_inner(plugin: &PatchBukkitPlugin, server: Arc<Context>) -> Resu
|
||||
let config = PatchBukkitConfig::get_or_create(config_path)
|
||||
.map_err(|e| format!("Failed to setup PatchBukkit config: {e}"))?;
|
||||
|
||||
|
||||
|
||||
// Manage embedded resources
|
||||
setup_j4rs(&dirs.j4rs).map_err(|e| format!("Failed to setup J4RS: {e}"))?;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user