mindustry logic execution, map- and schematic- parsing and rendering
-rw-r--r--mindus/Cargo.toml24
-rw-r--r--mindus/build.rs2
-rw-r--r--mindus/src/block/mod.rs2
-rw-r--r--mindus/src/block/ratios.rs4
-rw-r--r--mindus/src/content.rs2
-rw-r--r--mindus/src/data/base64.rs2
-rw-r--r--mindus/src/data/map.rs10
-rw-r--r--mindus/src/lib.rs7
8 files changed, 26 insertions, 27 deletions
diff --git a/mindus/Cargo.toml b/mindus/Cargo.toml
index 76d2175..90a6517 100644
--- a/mindus/Cargo.toml
+++ b/mindus/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "mindus"
-version = "5.0.44"
+version = "5.0.45"
edition = "2024"
description = "A library for working with mindustry data formats (eg schematics and maps) (fork of plandustry)"
authors = [
@@ -15,26 +15,26 @@ keywords = ["mindustry", "format", "drawing"]
rust-version = "1.85"
[dependencies]
-flate2 = "1.0"
-base64 = "0.21"
+flate2 = "1.1"
+base64 = "0.22"
paste = "1.0"
strconv = "0.1"
amap = "0.1"
color-hex = "0.2"
-thiserror = "1.0"
+thiserror = "2.0"
bobbin-bits = "0.1"
enum_dispatch = "0.3"
-phf = { version = "0.11", features = ["macros"] }
-fimg = { version = "0.4.52", features = [
+phf = { version = "0.14", features = ["macros"] }
+fimg = { version = "0.4.56", features = [
"scale",
"blur",
"save",
], default-features = false }
-atools = "0.1.6"
-either = "1.15.0"
+atools = "0.1.11"
+either = "1.16.0"
implicit-fn = "0.1.0"
-lower = "0.2.0"
-car = "0.1.3"
+lower = "0.2.1"
+car = "0.1.4"
[features]
bin = ["fimg/save"]
@@ -42,13 +42,13 @@ square = []
default = ["bin"]
[build-dependencies]
-fimg = { version = "0.4.52", features = [
+fimg = { version = "0.4.56", features = [
"scale",
"blur",
"save",
], default-features = false }
walkdir = "2"
-rand = "0.9.2"
+rand = "0.10.2"
[[bin]]
name = "mindus"
diff --git a/mindus/build.rs b/mindus/build.rs
index b25780c..2edc445 100644
--- a/mindus/build.rs
+++ b/mindus/build.rs
@@ -1,5 +1,5 @@
use fimg::DynImage;
-use rand::Rng;
+use rand::RngExt;
use std::fs::File;
use std::io::Write as _;
use std::iter::Iterator;
diff --git a/mindus/src/block/mod.rs b/mindus/src/block/mod.rs
index d884f43..d70979f 100644
--- a/mindus/src/block/mod.rs
+++ b/mindus/src/block/mod.rs
@@ -53,7 +53,7 @@ macro_rules! disp {
fn fro(value: T) -> Self;
}
$(
- impl const ConstFrom<$k> for BlockLogicEnum {
+ const impl ConstFrom<$k> for BlockLogicEnum {
fn fro(v: $k) -> Self {
BlockLogicEnum::$k(v)
}
diff --git a/mindus/src/block/ratios.rs b/mindus/src/block/ratios.rs
index ad38377..59b1eb0 100644
--- a/mindus/src/block/ratios.rs
+++ b/mindus/src/block/ratios.rs
@@ -26,13 +26,13 @@ pub enum Resource {
Fluid(crate::fluid::Type),
}
-impl const super::ConstFrom<crate::item::Type> for Resource {
+const impl super::ConstFrom<crate::item::Type> for Resource {
fn fro(value: crate::item::Type) -> Self {
Self::Item(value)
}
}
-impl const super::ConstFrom<crate::fluid::Type> for Resource {
+const impl super::ConstFrom<crate::fluid::Type> for Resource {
fn fro(value: crate::fluid::Type) -> Self {
Self::Fluid(value)
}
diff --git a/mindus/src/content.rs b/mindus/src/content.rs
index 0f15a87..50acdcf 100644
--- a/mindus/src/content.rs
+++ b/mindus/src/content.rs
@@ -78,7 +78,7 @@ macro_rules! content_enum {
MAPPER.get(name).copied()
}
}
- impl const $crate::content::Content for $tname {
+ const impl $crate::content::Content for $tname {
fn get_type(&self) -> $crate::content::Type {
$crate::content::Type::$ctype
}
diff --git a/mindus/src/data/base64.rs b/mindus/src/data/base64.rs
index 303e9e0..341dd6d 100644
--- a/mindus/src/data/base64.rs
+++ b/mindus/src/data/base64.rs
@@ -1,5 +1,5 @@
-use base64::{engine::general_purpose, engine::Engine as _};
pub use base64::{DecodeSliceError as DecodeError, EncodeSliceError as EncodeError};
+use base64::{engine::Engine as _, engine::general_purpose};
const BASE64: general_purpose::GeneralPurpose = general_purpose::STANDARD;
diff --git a/mindus/src/data/map.rs b/mindus/src/data/map.rs
index 77c764f..2fa8197 100644
--- a/mindus/src/data/map.rs
+++ b/mindus/src/data/map.rs
@@ -618,8 +618,7 @@ impl MapReader {
pub fn version(&mut self) -> Result<u32, ReadError> {
let x = self.buff.read_u32()?;
- (7..=11)
- .contains(&x)
+ matches!(x, 7..=11 | 13)
.then_some(x)
.ok_or(ReadError::Version(x.try_into().unwrap_or(0)))
}
@@ -804,7 +803,7 @@ impl MapReader {
m[i].nd = d
}
Complete(Err(x)) => return Err(x),
- _ => unreachable!(),
+ x => unreachable!("{x:?}"),
}
i += 1;
}
@@ -997,8 +996,11 @@ impl Serializable for Map {
buff.header()?;
buff.version = buff.version()?;
let tags = buff.tags_alloc()?;
+ if buff.version >= 12 {
+ buff.skip()?;
+ }
let r = buff.content()?;
- if buff.version >= 11 {
+ if buff.version == 11 {
buff.skip()?;
}
let mut m = buff.collect_map(tags, r)?;
diff --git a/mindus/src/lib.rs b/mindus/src/lib.rs
index eb28815..cf4a67e 100644
--- a/mindus/src/lib.rs
+++ b/mindus/src/lib.rs
@@ -1,20 +1,17 @@
//! crate for dealing with mindustry
#![feature(
error_generic_member_access,
- try_trait_v2_residual,
stmt_expr_attributes,
generic_const_exprs,
- iter_from_coroutine,
const_trait_impl,
coroutine_trait,
likely_unlikely,
portable_simd,
const_convert,
- derive_const,
- try_trait_v2,
try_blocks,
coroutines,
- const_cmp
+ const_cmp,
+ doc_cfg
)]
#![allow(clippy::redundant_closure_call, incomplete_features)]
#![warn(