use of com.microsoft.Malmo.Schemas.ShapeTypes in project malmo by Microsoft.
the class BlockDrawingHelper method setBlockState.
public void setBlockState(World w, BlockPos pos, XMLBlockState state) {
if (!state.isValid())
return;
// Do some depressingly necessary specific stuff here for different block types:
if (state.getBlock() instanceof BlockRailBase && state.variant != null) {
// Caller has specified a variant - is it a shape variant?
try {
ShapeTypes shape = ShapeTypes.fromValue(state.variant.getValue());
if (shape != null) {
// Yes, user has requested a particular shape.
// Minecraft won't honour this - and, worse, it may get altered by neighbouring pieces that are added later.
// So we don't bother trying to get this right now - we add it as a state check, and set it correctly
// after drawing has finished.
StateCheck sc = new StateCheck();
sc.pos = pos;
sc.desiredState = state.state;
sc.propertiesToCheck = new ArrayList<IProperty>();
sc.propertiesToCheck.add(((BlockRailBase) state.getBlock()).getShapeProperty());
this.checkList.add(sc);
}
} catch (IllegalArgumentException e) {
// Wasn't a shape variation. Ignore.
}
}
// Actually set the block state into the world:
w.setBlockState(pos, state.state);
// And now do the necessary post-placement processing:
if (state.type == BlockType.MOB_SPAWNER) {
TileEntity te = w.getTileEntity(pos);
if (// Ought to be!
te != null && te instanceof TileEntityMobSpawner) {
// Attempt to use the variation to control what type of mob this spawns:
try {
EntityTypes entvar = EntityTypes.fromValue(state.variant.getValue());
((TileEntityMobSpawner) te).getSpawnerBaseLogic().setEntityName(entvar.value());
} catch (Exception e) {
// Do nothing - user has requested a non-entity variant.
}
}
}
}
use of com.microsoft.Malmo.Schemas.ShapeTypes in project malmo by Microsoft.
the class MinecraftTypeHelper method attemptToGetAsVariant.
/** Attempt to parse string as a Variation
* @param part string token to parse
* @return the BlockVariant enum value for the requested variant, or null if it wasn't valid.
*/
public static Variation attemptToGetAsVariant(String part) {
// and have an object in the schemas that returns a list, so we can just iterate...
try {
StoneTypes var = StoneTypes.valueOf(part.toUpperCase());
if (var != null) {
Variation bv = new Variation();
bv.setValue(var.value());
return bv;
}
} catch (Exception e) {
// Does nothing.
}
try {
WoodTypes var = WoodTypes.valueOf(part.toUpperCase());
if (var != null) {
Variation bv = new Variation();
bv.setValue(var.value());
return bv;
}
} catch (Exception e) {
// Does nothing.
}
try {
FlowerTypes var = FlowerTypes.fromValue(part);
if (var != null) {
Variation bv = new Variation();
bv.setValue(var.value());
return bv;
}
} catch (Exception e) {
// Does nothing.
}
try {
EntityTypes var = EntityTypes.fromValue(part);
if (var != null) {
Variation bv = new Variation();
bv.setValue(var.value());
return bv;
}
} catch (Exception e) {
// Does nothing.
}
try {
MonsterEggTypes var = MonsterEggTypes.fromValue(part);
if (var != null) {
Variation bv = new Variation();
bv.setValue(var.value());
return bv;
}
} catch (Exception e) {
// Does nothing.
}
try {
ShapeTypes var = ShapeTypes.fromValue(part);
if (var != null) {
Variation bv = new Variation();
bv.setValue(var.value());
return bv;
}
} catch (Exception e) {
// Does nothing.
}
try {
HalfTypes var = HalfTypes.fromValue(part);
if (var != null) {
Variation bv = new Variation();
bv.setValue(var.value());
return bv;
}
} catch (Exception e) {
// Does nothing.
}
return null;
}
Aggregations