add more loot table conditions
fix https://github.com/Pumpkin-MC/Pumpkin/issues/1155
This commit is contained in:
parent
0bc7405f12
commit
91e77c33a0
22
Cargo.lock
generated
22
Cargo.lock
generated
@ -125,9 +125,9 @@ checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-compression"
|
name = "async-compression"
|
||||||
version = "0.4.28"
|
version = "0.4.29"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6448dfb3960f0b038e88c781ead1e7eb7929dfc3a71a1336ec9086c00f6d1e75"
|
checksum = "5bee399cc3a623ec5a2db2c5b90ee0190a2260241fbe0c023ac8f7bab426aaf8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"compression-codecs",
|
"compression-codecs",
|
||||||
"compression-core",
|
"compression-core",
|
||||||
@ -421,14 +421,14 @@ version = "3.0.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e"
|
checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.59.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "compression-codecs"
|
name = "compression-codecs"
|
||||||
version = "0.4.28"
|
version = "0.4.29"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "46cc6539bf1c592cff488b9f253b30bc0ec50d15407c2cf45e27bd8f308d5905"
|
checksum = "c7eea68f0e02c2b0aa8856e9a9478444206d4b6828728e7b0697c0f8cca265cb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"compression-core",
|
"compression-core",
|
||||||
"flate2",
|
"flate2",
|
||||||
@ -439,9 +439,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "compression-core"
|
name = "compression-core"
|
||||||
version = "0.4.28"
|
version = "0.4.29"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2957e823c15bde7ecf1e8b64e537aa03a6be5fda0e2334e99887669e75b12e01"
|
checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "console-api"
|
name = "console-api"
|
||||||
@ -916,7 +916,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
|
checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.59.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -2475,7 +2475,7 @@ dependencies = [
|
|||||||
"errno",
|
"errno",
|
||||||
"libc",
|
"libc",
|
||||||
"linux-raw-sys",
|
"linux-raw-sys",
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.59.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -2865,7 +2865,7 @@ dependencies = [
|
|||||||
"fastrand",
|
"fastrand",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"rustix",
|
"rustix",
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.59.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3461,7 +3461,7 @@ version = "0.1.9"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.59.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@ -44,6 +44,8 @@ pub struct LootPoolStruct {
|
|||||||
entries: Vec<LootPoolEntryStruct>,
|
entries: Vec<LootPoolEntryStruct>,
|
||||||
rolls: LootNumberProviderTypes, // TODO
|
rolls: LootNumberProviderTypes, // TODO
|
||||||
bonus_rolls: f32,
|
bonus_rolls: f32,
|
||||||
|
conditions: Option<Vec<LootConditionStruct>>,
|
||||||
|
functions: Option<Vec<LootFunctionStruct>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ToTokens for LootPoolStruct {
|
impl ToTokens for LootPoolStruct {
|
||||||
@ -55,12 +57,28 @@ impl ToTokens for LootPoolStruct {
|
|||||||
.collect();
|
.collect();
|
||||||
let rolls = &self.rolls;
|
let rolls = &self.rolls;
|
||||||
let bonus_rolls = &self.bonus_rolls;
|
let bonus_rolls = &self.bonus_rolls;
|
||||||
|
let conditions_tokens = match &self.conditions {
|
||||||
|
Some(conds) => {
|
||||||
|
let cond_tokens: Vec<_> = conds.iter().map(|c| c.to_token_stream()).collect();
|
||||||
|
quote! { Some(&[#(#cond_tokens),*]) }
|
||||||
|
}
|
||||||
|
None => quote! { None },
|
||||||
|
};
|
||||||
|
let functions_tokens = match &self.functions {
|
||||||
|
Some(fns) => {
|
||||||
|
let cond_tokens: Vec<_> = fns.iter().map(|c| c.to_token_stream()).collect();
|
||||||
|
quote! { Some(&[#(#cond_tokens),*]) }
|
||||||
|
}
|
||||||
|
None => quote! { None },
|
||||||
|
};
|
||||||
|
|
||||||
tokens.extend(quote! {
|
tokens.extend(quote! {
|
||||||
LootPool {
|
LootPool {
|
||||||
entries: &[#(#entries_tokens),*],
|
entries: &[#(#entries_tokens),*],
|
||||||
rolls: #rolls,
|
rolls: #rolls,
|
||||||
bonus_rolls: #bonus_rolls,
|
bonus_rolls: #bonus_rolls,
|
||||||
|
conditions: #conditions_tokens,
|
||||||
|
functions: #functions_tokens,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,7 +27,7 @@ aes = "0.8"
|
|||||||
cfb8 = "0.8"
|
cfb8 = "0.8"
|
||||||
|
|
||||||
# compression
|
# compression
|
||||||
async-compression = { version = "0.4.28", features = ["tokio", "zlib"] }
|
async-compression = { version = "0.4.29", features = ["tokio", "zlib"] }
|
||||||
|
|
||||||
take_mut = "0.2.2"
|
take_mut = "0.2.2"
|
||||||
bitflags = "2.9.3"
|
bitflags = "2.9.3"
|
||||||
|
|||||||
@ -16,6 +16,8 @@ pub struct LootPool {
|
|||||||
pub entries: &'static [LootPoolEntry],
|
pub entries: &'static [LootPoolEntry],
|
||||||
pub rolls: LootNumberProviderTypes,
|
pub rolls: LootNumberProviderTypes,
|
||||||
pub bonus_rolls: f32,
|
pub bonus_rolls: f32,
|
||||||
|
pub conditions: Option<&'static [LootCondition]>,
|
||||||
|
pub functions: Option<&'static [LootFunction]>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Debug)]
|
#[derive(Clone, PartialEq, Debug)]
|
||||||
|
|||||||
@ -26,6 +26,12 @@ impl LootTableExt for LootTable {
|
|||||||
|
|
||||||
if let Some(pools) = self.pools {
|
if let Some(pools) = self.pools {
|
||||||
for pool in pools {
|
for pool in pools {
|
||||||
|
if let Some(conditions) = pool.conditions
|
||||||
|
&& !conditions.iter().all(|cond| cond.is_fulfilled(¶ms))
|
||||||
|
{
|
||||||
|
return stacks;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
let rolls = pool
|
let rolls = pool
|
||||||
.rolls
|
.rolls
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user