use of com.microsoft.Malmo.Schemas.EntityTypes 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().setEntityId(new ResourceLocation(entvar.value()));
} catch (Exception e) {
// Do nothing - user has requested a non-entity variant.
}
}
}
if (state.type == BlockType.NOTEBLOCK) {
TileEntity te = w.getTileEntity(pos);
if (te != null && te instanceof TileEntityNote && state.variant != null) {
try {
NoteTypes note = NoteTypes.fromValue(state.variant.getValue());
if (note != null) {
// User has requested a particular note.
((TileEntityNote) te).note = (byte) note.ordinal();
}
} catch (IllegalArgumentException e) {
// Wasn't a note variation. Ignore.
}
}
}
}
use of com.microsoft.Malmo.Schemas.EntityTypes in project malmo by Microsoft.
the class AgentQuitFromCatchingMobImplementation method doIWantToQuit.
@Override
public boolean doIWantToQuit(MissionInit missionInit) {
this.quitCode = "";
List<Entity> caughtEntities = RewardForCatchingMobImplementation.getCaughtEntities();
for (Entity ent : caughtEntities) {
// Do we care about this entity?
for (MobWithDescription mob : this.qcmparams.getMob()) {
for (EntityTypes et : mob.getType()) {
if (et.value().equals(ent.getName())) {
if (!mob.isGlobal()) {
// If global flag is false, our player needs to be adjacent to the mob in order to claim the reward.
BlockPos entityPos = new BlockPos(ent.posX, ent.posY, ent.posZ);
EntityPlayerSP player = Minecraft.getMinecraft().player;
BlockPos playerPos = new BlockPos(player.posX, player.posY, player.posZ);
if (Math.abs(entityPos.getX() - playerPos.getX()) + Math.abs(entityPos.getZ() - playerPos.getZ()) > 1)
continue;
}
this.quitCode = mob.getDescription();
return true;
}
}
}
}
return false;
}
Aggregations