Model loading changes and a few more block fixes
This commit is contained in:
parent
af33935f47
commit
81dd2adc42
|
@ -83,7 +83,7 @@ impl Factory {
|
|||
pub fn get_state_model<R: Rng, W: Write>(models: &Arc<RwLock<Factory>>, plugin: &str, name: &str, variant: &str, rng: &mut R,
|
||||
snapshot: &world::Snapshot, x: i32, y: i32, z: i32, buf: &mut W) -> usize {
|
||||
let key = Key(plugin.to_owned(), name.to_owned());
|
||||
let mut missing = false;
|
||||
let mut missing_variant = false;
|
||||
{
|
||||
let m = models.read().unwrap();
|
||||
if let Some(model) = m.models.get(&key) {
|
||||
|
@ -91,10 +91,11 @@ impl Factory {
|
|||
let model = var.choose_model(rng);
|
||||
return model.render(&*m, snapshot, x, y, z, buf);
|
||||
}
|
||||
missing = true;
|
||||
missing_variant = true;
|
||||
}
|
||||
}
|
||||
if !missing {
|
||||
if !missing_variant {
|
||||
// Whole model not loaded, try and load
|
||||
let mut m = models.write().unwrap();
|
||||
if !m.models.contains_key(&key) && !m.load_model(plugin, name) {
|
||||
error!("Error loading model {}:{}", plugin, name);
|
||||
|
@ -104,10 +105,12 @@ impl Factory {
|
|||
let model = var.choose_model(rng);
|
||||
return model.render(&*m, snapshot, x, y, z, buf);
|
||||
}
|
||||
missing_variant = true;
|
||||
}
|
||||
}
|
||||
let ret = Factory::get_state_model(models, "steven", "missing_block", "normal", rng, snapshot, x, y, z, buf);
|
||||
{
|
||||
if !missing_variant {
|
||||
// Still no model, replace with placeholder
|
||||
let mut m = models.write().unwrap();
|
||||
let model = m.models.get(&Key("steven".to_owned(), "missing_block".to_owned())).unwrap().clone();
|
||||
m.models.insert(key, model);
|
||||
|
@ -118,7 +121,10 @@ impl Factory {
|
|||
fn load_model(&mut self, plugin: &str, name: &str) -> bool {
|
||||
let file = match self.resources.read().unwrap().open(plugin, &format!("blockstates/{}.json", name)) {
|
||||
Some(val) => val,
|
||||
None => return false,
|
||||
None => {
|
||||
error!("Error missing block state for {}:{}", plugin, name);
|
||||
return false;
|
||||
},
|
||||
};
|
||||
let mdl: serde_json::Value = try_log!(serde_json::from_reader(file));
|
||||
|
||||
|
@ -135,8 +141,8 @@ impl Factory {
|
|||
model.variants.insert(k.clone(), vars);
|
||||
}
|
||||
}
|
||||
if let Some(multipart) = mdl.find("multipart").and_then(|v| v.as_array()) {
|
||||
warn!("Found unhandled multipart {:?}", multipart);
|
||||
if let Some(_multipart) = mdl.find("multipart").and_then(|v| v.as_array()) {
|
||||
warn!("Found unhandled multipart for {}:{}", plugin, name);
|
||||
}
|
||||
|
||||
self.models.insert(Key(plugin.to_owned(), name.to_owned()), model);
|
||||
|
|
|
@ -787,7 +787,7 @@ define_blocks! {
|
|||
force_shade: false,
|
||||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "stick_piston" ) },
|
||||
model { ("minecraft", "sticky_piston" ) },
|
||||
variant format!("extended={},facing={}", extended, facing.as_string()),
|
||||
}
|
||||
Web {
|
||||
|
@ -1290,7 +1290,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "redstone_wire" ) },
|
||||
variant format!("north={},south={},east={},west={},power={}", north.as_string(), south.as_string(), east.as_string(), west.as_string(), power),
|
||||
}
|
||||
DiamondOre {
|
||||
props {},
|
||||
|
@ -1830,7 +1829,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "cactus" ) },
|
||||
variant format!("age={}", age),
|
||||
}
|
||||
Clay {
|
||||
props {},
|
||||
|
@ -1856,7 +1854,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "reeds" ) },
|
||||
variant format!("age={}", age),
|
||||
}
|
||||
Jukebox {
|
||||
props {
|
||||
|
@ -1889,7 +1886,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "fence" ) },
|
||||
variant format!("north={},south={},east={},west={}", north, south, east, west),
|
||||
}
|
||||
Pumpkin {
|
||||
props {
|
||||
|
@ -2264,7 +2260,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "iron_bars" ) },
|
||||
variant format!("north={},south={},east={},west={}", north, south, east, west),
|
||||
}
|
||||
GlassPane {
|
||||
props {},
|
||||
|
@ -2490,7 +2485,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "nether_brick_fence" ) },
|
||||
variant format!("north={},south={},east={},west={}", north, south, east, west),
|
||||
}
|
||||
NetherBrickStairs {
|
||||
props {
|
||||
|
@ -3016,7 +3010,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "cobblestone_wall" ) },
|
||||
variant format!("north={},south={},east={},west={},up={},variant={}", north, south, east, west, up, variant.data()),
|
||||
}
|
||||
FlowerPot {
|
||||
props {
|
||||
|
@ -3453,14 +3446,11 @@ define_blocks! {
|
|||
RailShape::AscendingNorth,
|
||||
RailShape::AscendingSouth,
|
||||
RailShape::AscendingEast,
|
||||
RailShape::AscendingWest,
|
||||
RailShape::NorthEast,
|
||||
RailShape::NorthWest,
|
||||
RailShape::SouthEast,
|
||||
RailShape::SouthWest
|
||||
RailShape::AscendingWest
|
||||
],
|
||||
powered: bool = [false, true],
|
||||
},
|
||||
data Some(shape.data()),
|
||||
data Some(shape.data() | (if powered { 0x8 } else { 0x0 })),
|
||||
material Material {
|
||||
renderable: true,
|
||||
never_cull: false,
|
||||
|
@ -3469,7 +3459,7 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "activator_rail" ) },
|
||||
variant format!("shape={}", shape.as_string()),
|
||||
variant format!("powered={},shape={}", powered, shape.as_string()),
|
||||
}
|
||||
Dropper {
|
||||
props {
|
||||
|
@ -4140,7 +4130,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "spruce_fence" ) },
|
||||
variant format!("north={},south={},east={},west={}", north, south, east, west),
|
||||
}
|
||||
BirchFence {
|
||||
props {
|
||||
|
@ -4158,7 +4147,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "birch_fence" ) },
|
||||
variant format!("north={},south={},east={},west={}", north, south, east, west),
|
||||
}
|
||||
JungleFence {
|
||||
props {
|
||||
|
@ -4176,7 +4164,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "jungle_fence" ) },
|
||||
variant format!("north={},south={},east={},west={}", north, south, east, west),
|
||||
}
|
||||
DarkOakFence {
|
||||
props {
|
||||
|
@ -4194,7 +4181,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "dark_oak_fence" ) },
|
||||
variant format!("north={},south={},east={},west={}", north, south, east, west),
|
||||
}
|
||||
AcaciaFence {
|
||||
props {
|
||||
|
@ -4212,7 +4198,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "acacia_fence" ) },
|
||||
variant format!("north={},south={},east={},west={}", north, south, east, west),
|
||||
}
|
||||
SpruceDoor {
|
||||
props {
|
||||
|
@ -4404,7 +4389,6 @@ define_blocks! {
|
|||
transparent: false,
|
||||
},
|
||||
model { ("minecraft", "chorus_plant" ) },
|
||||
variant format!("north={},south={},east={},west={},up={},down={}", north, south, east, west, up, down),
|
||||
}
|
||||
ChorusFlower {
|
||||
props {
|
||||
|
|
Loading…
Reference in New Issue